<?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>218928</bug_id>
          
          <creation_ts>2020-11-13 16:30:55 -0800</creation_ts>
          <short_desc>Initial implementation of DOM rendering via the GPU process</short_desc>
          <delta_ts>2020-11-15 10:21:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>sabouhallawa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1707431</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-13 16:30:55 -0800</bug_when>
    <thetext>Initial implementation of DOM rendering via the GPU process</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707433</commentid>
    <comment_count>1</comment_count>
      <attachid>414106</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-13 16:34:12 -0800</bug_when>
    <thetext>Created attachment 414106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707438</commentid>
    <comment_count>2</comment_count>
      <attachid>414106</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-13 16:53:04 -0800</bug_when>
    <thetext>Comment on attachment 414106
Patch

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

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:183
&gt; +        m_frontBuffer.imageBuffer = m_layer-&gt;context()-&gt;ensureRemoteRenderingBackendProxy().createImageBuffer(backingStoreSize(), m_acceleratesDrawing ? WebCore::RenderingMode::Accelerated : WebCore::RenderingMode::Unaccelerated, 1, WebCore::ColorSpace::SRGB, pixelFormat());

This feels a bit weird. Maybe RemoteLayerBackingStore needs a delegate.

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:321
&gt; +    // FIXME: This method has a weird name. This is &quot;submit work&quot;.
&gt; +    m_frontBuffer.imageBuffer-&gt;flushDrawingContextAndCommit();

Yes

&gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:362
&gt; +    auto bitmap = ShareableBitmap::create(WTF::get&lt;ShareableBitmap::Handle&gt;(*m_bufferHandle));
&gt; +    layer.contents = (__bridge id)bitmap-&gt;makeCGImageCopy().get();

Hmm, could someone write into the sharable bitmap while the layer owns it? Or is the &quot;copy&quot; really a copy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707570</commentid>
    <comment_count>3</comment_count>
      <attachid>414155</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-14 22:35:13 -0800</bug_when>
    <thetext>Created attachment 414155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707572</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-11-14 23:16:22 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #2)
&gt; Comment on attachment 414106 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=414106&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:183
&gt; &gt; +        m_frontBuffer.imageBuffer = m_layer-&gt;context()-&gt;ensureRemoteRenderingBackendProxy().createImageBuffer(backingStoreSize(), m_acceleratesDrawing ? WebCore::RenderingMode::Accelerated : WebCore::RenderingMode::Unaccelerated, 1, WebCore::ColorSpace::SRGB, pixelFormat());
&gt; 
&gt; This feels a bit weird. Maybe RemoteLayerBackingStore needs a delegate.

A little weird, but RemoteLayerTreeContext is kind of RLBS&apos;s &quot;delegate&quot;, in a sense. (Other things that it uses RemoteLayerTreeContext for include &quot;hey I was created&quot;, and &quot;I&apos;m about to paint&quot;, both of which are veryyyy delegatey.

&gt; &gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:321
&gt; &gt; +    // FIXME: This method has a weird name. This is &quot;submit work&quot;.
&gt; &gt; +    m_frontBuffer.imageBuffer-&gt;flushDrawingContextAndCommit();
&gt; 
&gt; Yes
&gt; 
&gt; &gt; Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:362
&gt; &gt; +    auto bitmap = ShareableBitmap::create(WTF::get&lt;ShareableBitmap::Handle&gt;(*m_bufferHandle));
&gt; &gt; +    layer.contents = (__bridge id)bitmap-&gt;makeCGImageCopy().get();
&gt; 
&gt; Hmm, could someone write into the sharable bitmap while the layer owns it?
&gt; Or is the &quot;copy&quot; really a copy?

It&apos;s not a real copy (I have no idea why it&apos;s called that). &quot;Someone&quot; could, for sure, but we won&apos;t. The same is true of the IOSurfaces, though??</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707584</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-15 01:31:18 -0800</bug_when>
    <thetext>Committed r269824: &lt;https://trac.webkit.org/changeset/269824&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414155.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707585</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-15 01:32:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/71410310&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707621</commentid>
    <comment_count>7</comment_count>
      <attachid>414155</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-11-15 10:21:11 -0800</bug_when>
    <thetext>Comment on attachment 414155
Patch

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

&gt; Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:43
&gt; +class ThreadSafeRemoteImageBufferFlusher : public WebCore::ThreadSafeImageBufferFlusher {

Can this be final?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414106</attachid>
            <date>2020-11-13 16:34:12 -0800</date>
            <delta_ts>2020-11-14 22:35:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218928-20201113163400.patch</filename>
            <type>text/plain</type>
            <size>57846</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAxMDVkMjBlYTU4Y2Vm
MGQ0ODBmNGJiOGE2NTQwMDU0MWViODUxZC4uNDczN2FlZDAwYjQ5MTIyZGEzMzE1ZjRjMzY3NWJj
MDcxOWEyNzM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIwLTExLTEzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEluaXRpYWwgaW1w
bGVtZW50YXRpb24gb2YgRE9NIHJlbmRlcmluZyB2aWEgdGhlIEdQVSBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg5MjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHM7IHdp
bGwgYmUgY292ZXJlZCBieSBhbGwgZXhpc3RpbmcgRE9NIHJlbmRlcmluZyB0ZXN0cyBpbiBHUFUg
cHJvY2VzcyBtb2RlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VCdWZmZXJCYWNrZW5kOjppc0luVXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OnNldFZvbGF0aWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVyQmFja2VuZDo6cmVsZWFzZUJ1ZmZlclRvUG9vbCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZUJ1ZmZlckJhY2tlbmQ6OmNyZWF0ZUZsdXNoZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SU9T
dXJmYWNlUG9vbDo6dGFrZVN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlUG9v
bDo6bWFya09sZGVyU3VyZmFjZXNQdXJnZWFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVh
ZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXJDRzo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlckNH
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JT
cGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250
ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjcmVh
dGVGbHVzaGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1
cENvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVyQ0dCYWNrZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVy
SU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmlzSW5Vc2UgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6c2V0Vm9sYXRp
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpyZWxl
YXNlQnVmZmVyVG9Qb29sKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQuaDoKKyAgICAgICAgQWRkIGlzSW5Vc2UsIHNldFZvbGF0aWxl
LCBhbmQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dCB0byBJbWFnZUJ1ZmZlciwKKyAgICAgICAgdG8g
bWFuYWdlIHZvbGF0aWxlIHN1cmZhY2VzOyB0aGV5J3JlIG9ubHkgaW1wbGVtZW50ZWQgZm9yIGlu
LXByb2Nlc3MKKyAgICAgICAgSU9TdXJmYWNlIHJpZ2h0IG5vdywgaW4gb3JkZXIgdG8ga2VlcCBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZSB3b3JraW5nCisgICAgICAgIGFmdGVyIHRyYW5zaXRpb25p
bmcgaXQgdG8gSW1hZ2VCdWZmZXIuIEEgZnV0dXJlIHBhdGNoIHdpbGwgZGV0ZXJtaW5lCisgICAg
ICAgIGhvdyB0byBpbXBsZW1lbnQgdGhpcyBtZWNoYW5pc20gZm9yIHJlbW90ZSBJT1N1cmZhY2Vz
LgorCisgICAgICAgIEFkZCBjcmVhdGVGbHVzaGVyIHRvIEltYWdlQnVmZmVyLCB3aGljaCByZXR1
cm5zIGFuIG9iamVjdCB0aGF0IGNhbgorICAgICAgICBiZSB0b3NzZWQgdG8gYSBiYWNrZ3JvdW5k
IHF1ZXVlLCBhbmQgaGFzIG9uZSBtZXRob2Q6IGZsdXNoKCksIHdoaWNoCisgICAgICAgIGJsb2Nr
cyB1bnRpbCB0aGUgSW1hZ2VCdWZmZXIncyBvdXN0YW5kaW5nIHBhaW50aW5nIGlzIGZsdXNoZWQu
IFRoaXMgaXMKKyAgICAgICAgY3VycmVudGx5IGltcGxlbWVudGVkIGZvciBDRyBqdXN0IGJ5IGNh
bGxpbmcgQ0dDb250ZXh0Rmx1c2guIFRoaXMKKyAgICAgICAgaXMgdXNlZCB0byBhYnN0cmFjdCBv
dXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUncyBiYWNrZ3JvdW5kLXRocmVhZAorICAgICAgICBm
bHVzaCBvZiBhbGwgc3VyZmFjZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9JT1N1cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZh
Y2UubW06CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OnN0YXRlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklPU3VyZmFjZTo6c2V0Vm9sYXRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6
b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3JlOjpJT1N1cmZhY2U6OnNldElzVm9sYXRpbGUp
OiBEZWxldGVkLgorICAgICAgICBNYWtlIHVzZSBvZiBWb2xhdGlsaXR5U3RhdGUgaW5zdGVhZCBv
ZiBTdXJmYWNlU3RhdGUuCisKKwogMjAyMC0xMS0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgTW92ZSBtb3JlIFdlYktpdExlZ2FjeSBwcmVmZXJlbmNlcyBib3Vu
ZCB0byBTZXR0aW5ncyB0byBXZWJQcmVmZXJlbmNlcy55YW1sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM0Mzc1Yzk2
ZGRkMjZhOWRlMTJiMzMwYTcyM2Q5ZTEwMTU5MmRmNDguLmU1MWU3OTM0MmYwOGZlN2ZiNzc1YWNl
ZTg5ODRiNjQ1MGM3ZGY4YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTEtMTMg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW5pdGlh
bCBpbXBsZW1lbnRhdGlvbiBvZiBET00gcmVuZGVyaW5nIHZpYSB0aGUgR1BVIHByb2Nlc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODkyOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aGFzRnJvbnRCdWZmZXIgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpvcGVyYXRvciBib29s
IGNvbnN0KToKKyAgICAgICAgKiBTaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmRlY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpwaXhl
bEZvcm1hdCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpieXRlc1BlclBpeGVsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6dGFrZVBlbmRpbmdGbHVzaGVyKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxpdHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNj
YXJkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNv
bnRleHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpzdXJmYWNlQnVmZmVyRm9ybWF0IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgUmVpbXBsZW1lbnQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUgaW4g
dGVybXMgb2YgSW1hZ2VCdWZmZXIgaW5zdGVhZCBvZgorICAgICAgICB1c2luZyBTaGFyZWFibGVC
aXRtYXAgKyBJT1N1cmZhY2UgZXhwbGljaXRseS4KKyAgICAgICAgV2UgdXNlIENvbmNyZXRlSW1h
Z2VCdWZmZXIgdmVyc2lvbnMgb2YgdGhlIHNoYXJlYWJsZSBiYWNrZW5kcyBpbiB0aGUgV2ViQ29u
dGVudCBwcm9jZXNzCisgICAgICAgIGluIHRoZSBub24tR1BVLXByb2Nlc3MgY2FzZSwgYW5kIG5v
cm1hbCBEaXNwbGF5TGlzdC1iYWNrZWQgUmVtb3RlSW1hZ2VCdWZmZXJQcm94aWVzCisgICAgICAg
IGluIHRoZSBHUFUgcHJvY2VzcyBjYXNlLgorCisgICAgICAgICogVUlQcm9jZXNzL1ZpZXdTbmFw
c2hvdFN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6Vmlld1NuYXBzaG90OjpzZXRWb2xhdGlsZSk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdTbmFwc2hvdDo6YXNMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlRocmVhZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXI6OlRocmVh
ZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXIpOgorICAgICAgICBBZGQgYSBoYWNrIHRvIGVt
dWxhdGUgVGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjsgcmlnaHQgbm93LAorICAg
ICAgICB3ZSdsbCBzeW5jaHJvbm91c2x5IGZsdXNoIG9uIHRoZSBtYWluIHRocmVhZCB3aGVuIGNy
ZWF0aW5nIHRoZSBmbHVzaGVyOworICAgICAgICBhIGZ1dHVyZSBwYXRjaCB3aWxsIG1vdmUgdGhp
cyBpbnRvIHRoZSBmbHVzaCgpIG1ldGhvZCBzbyB0aGF0IFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
CisgICAgICAgIGNhbiBkbyBpdCBvbiBhIHNlY29uZGFyeSBxdWV1ZS4KKworICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVJbWFnZUJ1ZmZlclByb3h5OjpjcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZl
ciBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dC5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6ZW5z
dXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6QmFja2lu
Z1N0b3JlRmx1c2hlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpmbHVzaCk6CisgICAgICAgIFJlaW1wbGVtZW50IEJh
Y2tpbmdTdG9yZUZsdXNoZXIgaW4gdGVybXMgb2YgdGhlIGFic3RyYWN0IFRocmVhZFNhZmVJbWFn
ZUJ1ZmZlckZsdXNoZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgTW92ZSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgZnJvbSBXZWJDaHJvbWVDbGllbnQg
dG8gV2ViUGFnZSwgc28gdGhhdAorICAgICAgICBvdGhlciBub24tV2ViQ29yZSBjbGllbnRzIGNh
biB1c2UgaXQgd2l0aG91dCBoYXZpbmcgdG8gdGhpbmsgYWJvdXQgV2ViQ2hyb21lQ2xpZW50Lgor
CiAyMDIwLTExLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIFJ1bkxvb3A6OlRpbWVyIGNvbnN0cnVjdG9yIHRha2luZyBpbiBhIFdURjo6RnVuY3Rpb24K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1Y2UxYmY5ZTUxMWI2YjAyYzY4NjJiZWM1MjAwNzM1ZmE3MjU0ZmEyLi5lNGQyN2ZjYzUz
NDE5ZTI4OWUxNDNkYzkxYmIwMTkwNzU2ZWY2MTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NTMsNiArNzUzLDggQEAKIAkJ
MkQ2RjNFOTExQzFFQ0IyRjAwNjFEQkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOEIxQzFFQ0IxQzAwNjFE
QkQ0IC8qIE1vY2tQYWdlT3ZlcmxheS5oICovOyB9OwogCQkyRDcwQkExMzE4MDc0RERGMDAwMTkw
OEEgLyogUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENzBCQTEyMTgwNzREREYwMDAxOTA4QSAvKiBQbGF0Zm9ybUNB
TGF5ZXJDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzZCQjgwMTk0NTYz
MjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRDc3MDVDNzI1NTI3NkNEMDAxRDBDOTQgLyogUGxh
dGZvcm1JbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRDc3
MDVDOTI1NTI4RDM0MDAxRDBDOTQgLyogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFDM0FBMjNFMUU1
NDQwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0RBMEYyMjQzNUVCMTkwMEYw
NDhEMSAvKiBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdEQTBFRjI0MzVFQjE3MDBGMDQ4
RDEgLyogV2ViVmlld1Zpc3VhbElkZW50aWZpY2F0aW9uT3ZlcmxheS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEN0VEMEFCMUJBRTk5MTcwMDQz
QjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVu
dEJhc2VkTW9jay5oICovOyB9OwogCQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVz
dExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTMyMTQwLDYgKzMyMTQy
LDcgQEAKIAkJCQlCMkExMEI5MjBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJh
Y2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTU1MDY0MEIwMjQwNzU4N0UwMEFBRTA0NSAvKiBJ
bWFnZUJ1ZmZlckNHQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ3NzA1QzkyNTUyOEQz
NDAwMUQwQzk0IC8qIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3MjdBN0YzQTI0MDc4Qjg0MDA0RDI5MzEgLyogSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkExMEQ5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1h
Z2VCdWZmZXJQaXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNFMjFERDIxODM0NDRBMDBFNjZG
NTUgLyogSW1hZ2VCdWZmZXJVdGlsaXRpZXNDRy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY3MCw2
ICszMzY3Myw3IEBACiAJCQkJQTcyM0Y3N0IxNDg0Q0E0QzAwOEM2REJFIC8qIFBsYXRmb3JtRXhw
b3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVCRTE5NTFENTRGNUZCMDBERDdDNjgg
LyogUGxhdGZvcm1HYW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MjZENTZFMjI1M0FFMjhE
MDAwMkVGOTAgLyogUGxhdGZvcm1JbWFnZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkQ3NzA1Qzcy
NTUyNzZDRDAwMUQwQzk0IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU1MDY0MEFGMjQwNzU4MkQwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1QzQ3NjgwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDU2MkY5NjExNTczRjg4RjAw
MzFDQTE2IC8qIFBsYXRmb3JtTGF5ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCmluZGV4
IDhmODRlOWJhMjJjY2U1ZDkyNzYyYjVhYzY3OTIzMjJlZWRhMzY5YTEuLjEyNzVjNDA4ZTNmMTU3
NTU2NGFiZTgwMzc1YmIyNzFhZWVhZmE4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKQEAgLTI1MCw2ICsyNTAs
MzkgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYm9v
bCBpc0luVXNlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChhdXRvKiBiYWNr
ZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBiYWNrZW5k
LT5pc0luVXNlKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2b2lkIHJl
bGVhc2VHcmFwaGljc0NvbnRleHQoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGF1dG8q
IGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGJh
Y2tlbmQtPnJlbGVhc2VHcmFwaGljc0NvbnRleHQoKTsKKyAgICB9CisKKyAgICBWb2xhdGlsaXR5
U3RhdGUgc2V0Vm9sYXRpbGUoYm9vbCBpc1ZvbGF0aWxlKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIGJhY2tlbmQtPnNldFZvbGF0aWxlKGlzVm9sYXRpbGUpOworICAgICAgICByZXR1
cm4gVm9sYXRpbGl0eVN0YXRlOjpWYWxpZDsKKyAgICB9CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkp
CisgICAgICAgICAgICByZXR1cm4gYmFja2VuZC0+Y3JlYXRlRmx1c2hlcigpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICB2b2lkIHJlbGVhc2VCdWZmZXJUb1Bvb2woKSBv
dmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQgPSBlbnN1cmVCYWNrZW5k
Q3JlYXRlZCgpKQorICAgICAgICAgICAgYmFja2VuZC0+cmVsZWFzZUJ1ZmZlclRvUG9vbCgpOwor
ICAgIH0KKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCYWNrZW5kVHlwZT4gbV9iYWNrZW5kOwogICAg
IFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIu
aAppbmRleCA4NmYzMTgyMTNjYzhhNGY1NTA0M2Q1ZWUwOGFiNWRiN2UxNzk4ZjNmLi5lM2RhYTUz
MGI0MjMxNTE4OTFhZjgyOTRlZjNiYzg4OTEwMWRlNWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKQEAgLTgzLDYgKzgzLDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgc2l6ZV90IGV4dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwg
Ym9vbCBpc0luVXNlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlR3JhcGhp
Y3NDb250ZXh0KCkgPSAwOworICAgIHZpcnR1YWwgVm9sYXRpbGl0eVN0YXRlIHNldFZvbGF0aWxl
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUJ1ZmZlclRvUG9vbCgpID0gMDsK
KworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+IGNyZWF0ZUZsdXNoZXIoKSA9IDA7CisKICAgICB2aXJ0dWFsIFJlZlB0cjxOYXRpdmVJbWFn
ZT4gY29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgPSBDb3B5QmFja2luZ1N0b3JlKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGNvcHlJbWFnZShCYWNraW5nU3Rv
cmVDb3B5ID0gQ29weUJhY2tpbmdTdG9yZSwgUHJlc2VydmVSZXNvbHV0aW9uID0gUHJlc2VydmVS
ZXNvbHV0aW9uOjpObykgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCmluZGV4IDVlMmZhMDIxMjM4ZTM1
Y2UxOWMwYTQ1ZmFhYWMzOThjNzFjZWUzYzguLjEyNzVlMGVkNjRiNTljNDM5YzEyNmE5ZWY3MjFh
Y2I1NmIyNGEwZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC02MSw2ICs2MSwxOSBAQCBlbnVtIGNsYXNzIFBp
eGVsRm9ybWF0IDogdWludDhfdCB7CiAgICAgUkdCMTBBOCwKIH07CiAKK2VudW0gY2xhc3MgVm9s
YXRpbGl0eVN0YXRlIDogdWludDhfdCB7CisgICAgVmFsaWQsCisgICAgRW1wdHkKK307CisKK2Ns
YXNzIFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXIpOworcHVibGljOgorICAgIFRocmVhZFNh
ZmVJbWFnZUJ1ZmZlckZsdXNoZXIoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+VGhyZWFkU2Fm
ZUltYWdlQnVmZmVyRmx1c2hlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2go
KSA9IDA7Cit9OworCiBjbGFzcyBJbWFnZUJ1ZmZlckJhY2tlbmQgewogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgfkltYWdlQnVmZmVyQmFja2VuZCgpID0gZGVmYXVsdDsKQEAg
LTEwMiw2ICsxMTUsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9v
bCBjb3B5VG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmLCBHQ0dMZW51
bSwgUGxhdGZvcm1HTE9iamVjdCwgR0NHTGVudW0sIGJvb2wsIGJvb2wpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNJblVzZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VHcmFwaGljc0NvbnRleHQoKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCBWb2xhdGlsaXR5U3RhdGUgc2V0Vm9sYXRp
bGUoYm9vbCkgeyByZXR1cm4gVm9sYXRpbGl0eVN0YXRlOjpWYWxpZDsgfQorICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlQnVmZmVyVG9Qb29sKCkgeyB9CisKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVl
X3B0cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQogICAgIAogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0
VXBwZXJMZWZ0Q29ybmVyID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzQWNj
ZWxlcmF0ZWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0lPU3VyZmFjZVBvb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAKaW5kZXggMWIwZTFiNjFmMjgzZmU1MzI3ZjU5NWQ3
ZDM2ODA0ZmEyOGMwMTI5Yy4uNzY0ODU2ZTM3MmFjZTIzOWVmMDkzZDUwN2VjZTFhZDY1NmJiODdk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJm
YWNlUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9T
dXJmYWNlUG9vbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJm
YWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJbnRTaXplIHNpemUsIENHQ29sb3JTcGFj
ZQogCiAgICAgICAgIGRpZFJlbW92ZVN1cmZhY2UoKnN1cmZhY2UsIGZhbHNlKTsKIAotICAgICAg
ICBzdXJmYWNlLT5zZXRJc1ZvbGF0aWxlKGZhbHNlKTsKKyAgICAgICAgc3VyZmFjZS0+c2V0Vm9s
YXRpbGUoZmFsc2UpOwogCiAgICAgICAgIERVTVBfUE9PTF9TVEFUSVNUSUNTKCJ0YWtlU3VyZmFj
ZSAtIHRha2luZyIpOwogICAgICAgICByZXR1cm4gc3VyZmFjZTsKQEAgLTE0OCw3ICsxNDgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBJT1N1cmZhY2VQb29sOjp0YWtlU3VyZmFjZShJ
bnRTaXplIHNpemUsIENHQ29sb3JTcGFjZQogICAgICAgICBtX2luVXNlU3VyZmFjZXMucmVtb3Zl
KHN1cmZhY2VJdGVyKTsKICAgICAgICAgZGlkUmVtb3ZlU3VyZmFjZSgqc3VyZmFjZSwgdHJ1ZSk7
CiAKLSAgICAgICAgc3VyZmFjZS0+c2V0SXNWb2xhdGlsZShmYWxzZSk7CisgICAgICAgIHN1cmZh
Y2UtPnNldFZvbGF0aWxlKGZhbHNlKTsKIAogICAgICAgICBEVU1QX1BPT0xfU1RBVElTVElDUygi
dGFrZVN1cmZhY2UgLSB0YWtpbmcgaW4tdXNlIik7CiAgICAgICAgIHJldHVybiBzdXJmYWNlOwpA
QCAtMjk4LDcgKzI5OCw3IEBAIGJvb2wgSU9TdXJmYWNlUG9vbDo6bWFya09sZGVyU3VyZmFjZXNQ
dXJnZWFibGUoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBz
dXJmYWNlQW5kRGV0YWlscy5rZXktPnNldElzVm9sYXRpbGUodHJ1ZSk7CisgICAgICAgIHN1cmZh
Y2VBbmREZXRhaWxzLmtleS0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAgICAgICAgIHN1cmZhY2VBbmRE
ZXRhaWxzLnZhbHVlLmhhc01hcmtlZFB1cmdlYWJsZSA9IHRydWU7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFj
a2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHQmFja2VuZC5jcHAKaW5kZXggZDY2MGE1NmZjNjY0ZThkNGRkMDVhZTliMTJjNDgyMDZhNzYz
MmZkMi4uNjY1MmRhYmQzNTY0NzA0ZTI1MmE0YjE5NjI4NWNmMTc3ZTc2MThlZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0dCYWNrZW5kLmNwcApAQCAtNDMsNiArNDMsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyQ0cgOiBwdWJsaWMgVGhyZWFk
U2FmZUltYWdlQnVmZmVyRmx1c2hlciB7CitwdWJsaWM6CisgICAgVGhyZWFkU2FmZUltYWdlQnVm
ZmVyRmx1c2hlckNHKENHQ29udGV4dFJlZiBjb250ZXh0KQorICAgICAgICA6IG1fY29udGV4dChj
b250ZXh0KQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIENHQ29udGV4dEZsdXNoKG1fY29udGV4dC5nZXQoKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IG1fY29udGV4dDsKK307CisKIFJldGFp
blB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JT
cGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCkBAIC01Nyw5ICs3Myw4IEBAIFJldGFpblB0cjxDR0NvbG9yU3BhY2VSZWY+IEltYWdlQnVm
ZmVyQ0dCYWNrZW5kOjpjb250ZXh0Q29sb3JTcGFjZShjb25zdCBHcmFwaGljCiAgICAgcmV0dXJu
IG51bGxwdHI7CiAjZW5kaWYKIH0KLSMKIAotdm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0
dXBDb250ZXh0KCkKK3ZvaWQgSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4dCgpIGNv
bnN0CiB7CiAgICAgLy8gVGhlIGluaXRpYWwgQ1RNIG1hdGNoZXMgRGlzcGxheUxpc3Q6OlJlY29y
ZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoKSdzIGluaXRpYWwgQ1RNLgogICAgIGNvbnRleHQo
KS5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKQEAgLTE5MCw2ICsyMDUsMTEgQEAgU3RyaW5nIElt
YWdlQnVmZmVyQ0dCYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0
aW9uYWw8ZG91YmxlPgogICAgIHJldHVybiAiZGF0YTosIl9zOwogfQogCitzdGQ6OnVuaXF1ZV9w
dHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNy
ZWF0ZUZsdXNoZXIoKQoreworICAgIHJldHVybiBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZUlt
YWdlQnVmZmVyRmx1c2hlckNHPihjb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCkpOworfQorCiAj
aWYgVVNFKEFDQ0VMRVJBVEUpCiBzdGF0aWMgaW5saW5lIHZJbWFnZV9CdWZmZXIgbWFrZVZJbWFn
ZUJ1ZmZlcih1bnNpZ25lZCBieXRlc1BlclJvdywgdWludDhfdCogcm93cywgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCmluZGV4IDRhMzRhOGFlNWJjNjIwZjk0MTFm
NGJkMWJjZGIwNTBlZGI4NjkwZDQuLjM2N2RmNzM4OTJkN2Y3Njc2NTgxNDMxYzcyMDQwOWU4ZjQ3
NjljNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0dCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaApAQCAtNDQsMTEgKzQ0LDEzIEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgdG9EYXRhVVJMKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdCBvdmVycmlkZTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdG9EYXRhKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIE9wdGlvbmFsPGRv
dWJsZT4gcXVhbGl0eSkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGhy
ZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hlcigpIG92ZXJyaWRlOworCiBw
cm90ZWN0ZWQ6CiAgICAgdXNpbmcgSW1hZ2VCdWZmZXJCYWNrZW5kOjpJbWFnZUJ1ZmZlckJhY2tl
bmQ7CiAKICAgICBzdGF0aWMgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gY29udGV4dENvbG9y
U3BhY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0Jik7Ci0gICAgdm9pZCBzZXR1cENvbnRleHQoKTsK
KyAgICB2b2lkIHNldHVwQ29udGV4dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgUmV0YWluUHRyPENG
RGF0YVJlZj4gdG9DRkRhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91Ymxl
PiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0OwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcAppbmRleCBmZTlkM2IyZjll
ZmE2MGI2ODI5YTRmM2E0MTEyNzlkNmNlNTU5MGI4Li5hZDNmZjFkNzk3NzIwMzc2NDBlMmQ2OTk1
NDEyODg2MGI3NzQ4YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAK
QEAgLTEwNiw3ICsxMDYsMTMgQEAgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjpJbWFnZUJ1
ZmZlcklPU3VyZmFjZUJhY2tlbmQoY29uc3QgRmxvYXRTaXplJiBsb2dpY2EKIAogR3JhcGhpY3ND
b250ZXh0JiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOworCisgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0ID0gbV9zdXJmYWNlLT5lbnN1cmVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBpZiAobV9uZWVkc1NldHVwQ29udGV4dCkgeworICAgICAgICBtX25lZWRzU2V0dXBD
b250ZXh0ID0gZmFsc2U7CisgICAgICAgIHNldHVwQ29udGV4dCgpOworICAgIH0KKyAgICByZXR1
cm4gY29udGV4dDsKIH0KIAogdm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OmZsdXNo
Q29udGV4dCgpCkBAIC0xODQsNiArMTkwLDI3IEBAIElPU3VyZmFjZSogSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpzdXJmYWNlKCkKICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwogfQog
Citib29sIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6aXNJblVzZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fc3VyZmFjZS0+aXNJblVzZSgpOworfQorCit2b2lkIEltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZDo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpCit7CisgICAgbV9uZWVkc1Nl
dHVwQ29udGV4dCA9IHRydWU7CisgICAgcmV0dXJuIG1fc3VyZmFjZS0+cmVsZWFzZUdyYXBoaWNz
Q29udGV4dCgpOworfQorCitWb2xhdGlsaXR5U3RhdGUgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNr
ZW5kOjpzZXRWb2xhdGlsZShib29sIGlzVm9sYXRpbGUpCit7CisgICAgcmV0dXJuIG1fc3VyZmFj
ZS0+c2V0Vm9sYXRpbGUoaXNWb2xhdGlsZSk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kOjpyZWxlYXNlQnVmZmVyVG9Qb29sKCkKK3sKKyAgICBJT1N1cmZhY2U6Om1vdmVU
b1Bvb2woV1RGTW92ZShtX3N1cmZhY2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gSEFWRShJT1NVUkZBQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2Vu
ZC5oCmluZGV4IGViZWJmYWY5NmRiNDUxMjYzYmU0NTMzYmM2NWMwNTdiMmVhZWZjZTEuLmRlOTgy
MTExZTUyYzEyZWRiMDhkYzc4OGI1MGVjZWZiMzY1MDc2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9T
dXJmYWNlQmFja2VuZC5oCkBAIC02Myw2ICs2MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwdXRJ
bWFnZURhdGEoQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBpbnB1dEZvcm1hdCwgY29uc3QgSW1hZ2VE
YXRhJiwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCwgY29uc3QgSW50UG9pbnQmIGRlc3RQb2ludCwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBkZXN0Rm9ybWF0KSBvdmVycmlkZTsKICAgICBJT1N1cmZh
Y2UqIHN1cmZhY2UoKTsKIAorICAgIGJvb2wgaXNJblVzZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgcmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpIG92ZXJyaWRlOworICAgIFZvbGF0aWxpdHlT
dGF0ZSBzZXRWb2xhdGlsZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VCdWZmZXJU
b1Bvb2woKSBvdmVycmlkZTsKKwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc09yaWdpbkF0
VXBwZXJMZWZ0Q29ybmVyID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2Nl
bGVyYXRlZCA9IHRydWU7CiAKQEAgLTcyLDYgKzc3LDggQEAgcHJvdGVjdGVkOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElPU3VyZmFjZT4gbV9zdXJmYWNlOwogICAgIG11dGFibGUgYm9vbCBtX3Jl
cXVpcmVzRHJhd0FmdGVyUHV0SW1hZ2VEYXRhIHsgZmFsc2UgfTsKKworICAgIG11dGFibGUgYm9v
bCBtX25lZWRzU2V0dXBDb250ZXh0IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0lPU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9T
dXJmYWNlLmgKaW5kZXggMjA1NjVjOWFmOWQ4YjI0ZDJmY2I3OGMzNTgyZTZhNzZhZWE4NjVhOS4u
MGVjYWM1NGM5MDQ4ODkyYTU2NWQyZjgyMmEwNWY2YTYxNWVmMWJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLmgKQEAgLTUwLDYg
KzUwLDcgQEAgY2xhc3MgSW1hZ2VCdWZmZXI7CiAjZW5kaWYKIAogZW51bSBjbGFzcyBQaXhlbEZv
cm1hdCA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFZvbGF0aWxpdHlTdGF0ZSA6IHVpbnQ4X3Q7CiAK
IGNsYXNzIElPU3VyZmFjZSBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC0xMjgsMTkgKzEyOSwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3ND
b250ZXh0JiBlbnN1cmVHcmFwaGljc0NvbnRleHQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBDR0Nv
bnRleHRSZWYgZW5zdXJlUGxhdGZvcm1Db250ZXh0KGNvbnN0IEhvc3RXaW5kb3cqID0gbnVsbHB0
cik7CiAKLSAgICBlbnVtIGNsYXNzIFN1cmZhY2VTdGF0ZSB7Ci0gICAgICAgIFZhbGlkLAotICAg
ICAgICBFbXB0eQotICAgIH07Ci0KICAgICAvLyBRdWVyeWluZyB2b2xhdGlsaXR5IGNhbiBiZSBl
eHBlbnNpdmUsIHNvIGluIGNhc2VzIHdoZXJlIHRoZSBzdXJmYWNlIGlzCi0gICAgLy8gZ29pbmcg
dG8gYmUgdXNlZCBpbW1lZGlhdGVseSwgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2Ygc2V0SXNWb2xh
dGlsZSB0bworICAgIC8vIGdvaW5nIHRvIGJlIHVzZWQgaW1tZWRpYXRlbHksIHVzZSB0aGUgcmV0
dXJuIHZhbHVlIG9mIHNldFZvbGF0aWxlIHRvCiAgICAgLy8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhl
IGRhdGEgd2FzIHB1cmdlZCwgaW5zdGVhZCBvZiBmaXJzdCBjYWxsaW5nIHN0YXRlKCkgb3IgaXNW
b2xhdGlsZSgpLgotICAgIFN1cmZhY2VTdGF0ZSBzdGF0ZSgpIGNvbnN0OworICAgIFZvbGF0aWxp
dHlTdGF0ZSBzdGF0ZSgpIGNvbnN0OwogICAgIGJvb2wgaXNWb2xhdGlsZSgpIGNvbnN0OwogCi0g
ICAgLy8gc2V0SXNWb2xhdGlsZSBvbmx5IGhhcyBhbiBlZmZlY3Qgb24gaU9TIGFuZCBPUyAxMC45
IGFuZCBhYm92ZS4KLSAgICBXRUJDT1JFX0VYUE9SVCBTdXJmYWNlU3RhdGUgc2V0SXNWb2xhdGls
ZShib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWb2xhdGlsaXR5U3RhdGUgc2V0Vm9sYXRpbGUo
Ym9vbCk7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAg
ICBzaXplX3QgdG90YWxCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxCeXRlczsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1t
CmluZGV4IDExMTA4ZjkzYTY0Y2E0Mzc1NGE0YmM1OWEzZjIzNDBmMTdkNWE4M2EuLmEwZTUxMWFl
MzVmMDA1ODljZDIxZWIyMWI0ZmQxOWUyNzcxNWQwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0KQEAgLTMyNCwxMiArMzI0
LDEyIEBAIEdyYXBoaWNzQ29udGV4dCYgSU9TdXJmYWNlOjplbnN1cmVHcmFwaGljc0NvbnRleHQo
KQogICAgIHJldHVybiAqbV9ncmFwaGljc0NvbnRleHQ7CiB9CiAKLUlPU3VyZmFjZTo6U3VyZmFj
ZVN0YXRlIElPU3VyZmFjZTo6c3RhdGUoKSBjb25zdAorVm9sYXRpbGl0eVN0YXRlIElPU3VyZmFj
ZTo6c3RhdGUoKSBjb25zdAogewogICAgIHVpbnQzMl90IHByZXZpb3VzU3RhdGUgPSAwOwogICAg
IElPUmV0dXJuIHJldCA9IElPU3VyZmFjZVNldFB1cmdlYWJsZShtX3N1cmZhY2UuZ2V0KCksIGtJ
T1N1cmZhY2VQdXJnZWFibGVLZWVwQ3VycmVudCwgJnByZXZpb3VzU3RhdGUpOwogICAgIEFTU0VS
VF9VTlVTRUQocmV0LCByZXQgPT0ga0lPUmV0dXJuU3VjY2Vzcyk7Ci0gICAgcmV0dXJuIHByZXZp
b3VzU3RhdGUgPT0ga0lPU3VyZmFjZVB1cmdlYWJsZUVtcHR5ID8gSU9TdXJmYWNlOjpTdXJmYWNl
U3RhdGU6OkVtcHR5IDogSU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OlZhbGlkOworICAgIHJldHVy
biBwcmV2aW91c1N0YXRlID09IGtJT1N1cmZhY2VQdXJnZWFibGVFbXB0eSA/IFZvbGF0aWxpdHlT
dGF0ZTo6RW1wdHkgOiBWb2xhdGlsaXR5U3RhdGU6OlZhbGlkOwogfQogCiBib29sIElPU3VyZmFj
ZTo6aXNWb2xhdGlsZSgpIGNvbnN0CkBAIC0zNDAsMTYgKzM0MCwxNiBAQCBib29sIElPU3VyZmFj
ZTo6aXNWb2xhdGlsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHByZXZpb3VzU3RhdGUgIT0ga0lPU3Vy
ZmFjZVB1cmdlYWJsZU5vblZvbGF0aWxlOwogfQogCi1JT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZSBJ
T1N1cmZhY2U6OnNldElzVm9sYXRpbGUoYm9vbCBpc1ZvbGF0aWxlKQorVm9sYXRpbGl0eVN0YXRl
IElPU3VyZmFjZTo6c2V0Vm9sYXRpbGUoYm9vbCBpc1ZvbGF0aWxlKQogewogICAgIHVpbnQzMl90
IHByZXZpb3VzU3RhdGUgPSAwOwogICAgIElPUmV0dXJuIHJldCA9IElPU3VyZmFjZVNldFB1cmdl
YWJsZShtX3N1cmZhY2UuZ2V0KCksIGlzVm9sYXRpbGUgPyBrSU9TdXJmYWNlUHVyZ2VhYmxlVm9s
YXRpbGUgOiBrSU9TdXJmYWNlUHVyZ2VhYmxlTm9uVm9sYXRpbGUsICZwcmV2aW91c1N0YXRlKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJldCwgcmV0ID09IGtJT1JldHVyblN1Y2Nlc3MpOwogCiAgICAg
aWYgKHByZXZpb3VzU3RhdGUgPT0ga0lPU3VyZmFjZVB1cmdlYWJsZUVtcHR5KQotICAgICAgICBy
ZXR1cm4gSU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OkVtcHR5OworICAgICAgICByZXR1cm4gVm9s
YXRpbGl0eVN0YXRlOjpFbXB0eTsKIAotICAgIHJldHVybiBJT1N1cmZhY2U6OlN1cmZhY2VTdGF0
ZTo6VmFsaWQ7CisgICAgcmV0dXJuIFZvbGF0aWxpdHlTdGF0ZTo6VmFsaWQ7CiB9CiAKIElPU3Vy
ZmFjZTo6Rm9ybWF0IElPU3VyZmFjZTo6Zm9ybWF0KCkgY29uc3QKQEAgLTUwNSwxMyArNTA1LDEz
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJT1N1cmZh
Y2U6OkZvcm1hdCBmb3JtYXQpCiAgICAgcmV0dXJuIHRzOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgSU9TdXJmYWNlOjpTdXJmYWNlU3RhdGUgc3Rh
dGUpCitzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgVm9sYXRp
bGl0eVN0YXRlIHN0YXRlKQogewogICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIElPU3Vy
ZmFjZTo6U3VyZmFjZVN0YXRlOjpWYWxpZDoKKyAgICBjYXNlIFZvbGF0aWxpdHlTdGF0ZTo6VmFs
aWQ6CiAgICAgICAgIHRzIDw8ICJ2YWxpZCI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSU9T
dXJmYWNlOjpTdXJmYWNlU3RhdGU6OkVtcHR5OgorICAgIGNhc2UgVm9sYXRpbGl0eVN0YXRlOjpF
bXB0eToKICAgICAgICAgdHMgPDwgImVtcHR5IjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
QmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCA1N2IwZTMyNzY0MjcxN2I0YTQzZWYzZjZlYmY5
NjAxNTgxZjM0NmJjLi43MTE3YmVjMjVjZjNiNGFkNzcwZmNiOWJlNTgwNWQ5NzJhMDIwN2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyQmFja2VuZEhhbmRsZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgpA
QCAtMzcsNiArMzcsNyBAQCBPQkpDX0NMQVNTIENBTGF5ZXI7CiAvLyBGSVhNRTogTWFrZSBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIE9iamVjdGl2ZS1DIHNvIHdlIGNhbiBpbmNsdWRlIFdlYkxh
eWVyLmggaGVyZSBhbmQgc2hhcmUgdGhlIHR5cGVkZWYuCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBOYXRpdmVJbWFnZTsKK2NsYXNzIFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI7CiB0
eXBlZGVmIFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3QsIDU+IFJlcGFpbnRSZWN0TGlzdDsKIH0K
IApAQCAtNzYsMTQgKzc3LDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRnJvbnRCdWZmZXIo
KSBjb25zdAogICAgIHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKLSAgICAgICAgaWYgKG1fYWNjZWxl
cmF0ZXNEcmF3aW5nKQotICAgICAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5zdXJmYWNl
OwotI2VuZGlmCi0gICAgICAgIHJldHVybiAhIW1fZnJvbnRCdWZmZXIuYml0bWFwOworICAgICAg
ICByZXR1cm4gISFtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyOwogICAgIH0KIAotICAgIFJldGFp
blB0cjxDR0NvbnRleHRSZWY+IHRha2VGcm9udENvbnRleHRQZW5kaW5nRmx1c2goKTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gdGFr
ZVBlbmRpbmdGbHVzaGVyKCk7CiAKICAgICBlbnVtIGNsYXNzIEJ1ZmZlclR5cGUgewogICAgICAg
ICBGcm9udCwKQEAgLTk3LDE0ICs5NCwxMSBAQCBwdWJsaWM6CiAgICAgTW9ub3RvbmljVGltZSBs
YXN0RGlzcGxheVRpbWUoKSBjb25zdCB7IHJldHVybiBtX2xhc3REaXNwbGF5VGltZTsgfQogCiBw
cml2YXRlOgotICAgIHZvaWQgZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+JiYgYmFja0ltYWdlKTsKKyAgICB2b2lkIGRy
YXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdm9pZCBjbGVhckJh
Y2tpbmdTdG9yZSgpOwogICAgIHZvaWQgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwogCi0jaWYg
SEFWRShJT1NVUkZBQ0UpCi0gICAgV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgc3VyZmFjZUJ1
ZmZlckZvcm1hdCgpIGNvbnN0OwotI2VuZGlmCi0KKyAgICBXZWJDb3JlOjpQaXhlbEZvcm1hdCBw
aXhlbEZvcm1hdCgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgYmFja2luZ1N0b3JlU2l6
ZSgpIGNvbnN0OwogCiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwpAQCAtMTE2
LDIyICsxMTAsMTIgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpSZWdpb24gbV9kaXJ0eVJlZ2lv
bjsKIAogICAgIHN0cnVjdCBCdWZmZXIgewotICAgICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiaXRtYXA7Ci0jaWYgSEFWRShJT1NVUkZBQ0UpCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJT1N1cmZhY2U+IHN1cmZhY2U7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFn
ZUJ1ZmZlcj4gaW1hZ2VCdWZmZXI7CiAgICAgICAgIGJvb2wgaXNWb2xhdGlsZSA9IGZhbHNlOwot
I2VuZGlmCiAKICAgICAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgICAg
IHsKLSNpZiBIQVZFKElPU1VSRkFDRSkKLSAgICAgICAgICAgIGlmIChzdXJmYWNlKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAoYml0bWFwKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICByZXR1cm4gISFpbWFnZUJ1ZmZlcjsKICAgICAgICAgfQogCiAgICAgICAg
IHZvaWQgZGlzY2FyZCgpOwpAQCAtMTM5LDEyICsxMjMsMTAgQEAgcHJpdmF0ZToKIAogICAgIEJ1
ZmZlciBtX2Zyb250QnVmZmVyOwogICAgIEJ1ZmZlciBtX2JhY2tCdWZmZXI7Ci0jaWYgSEFWRShJ
T1NVUkZBQ0UpCiAgICAgQnVmZmVyIG1fc2Vjb25kYXJ5QmFja0J1ZmZlcjsKLSAgICBXVEY6Ok1h
Y2hTZW5kUmlnaHQgbV9mcm9udEJ1ZmZlclNlbmRSaWdodDsKLSNlbmRpZgorICAgIE9wdGlvbmFs
PEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZT4gbV9idWZmZXJIYW5kbGU7CiAKLSAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBtX2Zyb250Q29udGV4dFBlbmRpbmdGbHVzaDsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gbV9mcm9udEJ1
ZmZlckZsdXNoZXI7CiAKICAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fZGVlcENvbG9yIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZS5tbQppbmRleCAwMWQ2MzRhMjVlMTA3NjYyYzliMTNhMGM5ZWU4YjJkYzRlMTBjYjdkLi45M2Rj
ZjA2Mjc2ZjRjN2YyZDI2MDcyYTNiOTBhMmNmNGQ0OWJhZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCkBAIC0yOSwxMyArMjksMTYgQEAKICNpbXBvcnQgIkFyZ3VtZW50Q29kZXJz
LmgiCiAjaW1wb3J0ICJNYWNoUG9ydC5oIgogI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3Rl
LmgiCisjaW1wb3J0ICJQbGF0Zm9ybVJlbW90ZUltYWdlQnVmZmVyUHJveHkuaCIKICNpbXBvcnQg
IlJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIgogI2ltcG9ydCAiUmVtb3RlTGF5
ZXJUcmVlQ29udGV4dC5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0NvbnRl
eHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
SW1hZ2VCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkxheWVyLmg+CiAjaW1wb3J0IDxtYWNoL21hY2hfcG9ydC5o
PgpAQCAtOTksMTggKzEwMiwxNSBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNv
ZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbV9hY2NlbGVy
YXRlc0RyYXdpbmc7CiAgICAgZW5jb2RlciA8PCBtX2lzT3BhcXVlOwogCi0gICAgaWYgKG1fYWNj
ZWxlcmF0ZXNEcmF3aW5nKSB7Ci0gICAgICAgIGlmIChtX2Zyb250QnVmZmVyLnN1cmZhY2UpCi0g
ICAgICAgICAgICBlbmNvZGVyIDw8IG1fZnJvbnRCdWZmZXIuc3VyZmFjZS0+Y3JlYXRlU2VuZFJp
Z2h0KCk7CisgICAgT3B0aW9uYWw8SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBoYW5kbGU7Cisg
ICAgaWYgKG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIpIHsKKyAgICAgICAgLy8gRklYTUU6IFdl
IG5lZWQgdG8gZmxhdHRlbiB0aGUgY2xhc3MgaGllcmFyY2h5IHNvIHdlIGNhbiBhdm9pZCB0aGlz
IGJpZnVyY2F0aW9uLgorICAgICAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpCisgICAgICAg
ICAgICBoYW5kbGUgPSBzdGF0aWNfY2FzdDxBY2NlbGVyYXRlZFJlbW90ZUltYWdlQnVmZmVyUHJv
eHkgKj4obV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci5nZXQoKSktPmNyZWF0ZUltYWdlQnVmZmVy
QmFja2VuZEhhbmRsZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbmNvZGVyIDw8IFdU
Rjo6TWFjaFNlbmRSaWdodCgpOwotICAgICAgICByZXR1cm47CisgICAgICAgICAgICBoYW5kbGUg
PSBzdGF0aWNfY2FzdDxVbmFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94eSAqPihtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFu
ZGxlKCk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7Ci0KLSAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgbV9mcm9udEJ1ZmZlci5iaXRt
YXAtPmNyZWF0ZUhhbmRsZShoYW5kbGUpOwogICAgIGVuY29kZXIgPDwgaGFuZGxlOwogfQogCkBA
IC0xMjgsMjAgKzEyOCw4IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIFJlbW90ZUxheWVyQmFja2luZ1N0CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQubV9pc09wYXF1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmIChyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKLSAgICAgICAgTWFjaFNlbmRS
aWdodCBzZW5kUmlnaHQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2VuZFJpZ2h0KSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVzdWx0Lm1fZnJvbnRCdWZmZXJT
ZW5kUmlnaHQgPSBXVEZNb3ZlKHNlbmRSaWdodCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIEFTU0VSVCghcmVzdWx0Lm1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKLQotICAgIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhh
bmRsZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9idWZmZXJIYW5kbGUpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmVzdWx0Lm1fZnJvbnRCdWZmZXIuYml0bWFwID0g
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMTYzLDUyICsxNTEsNDggQEAgV2ViQ29yZTo6SW50U2l6ZSBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6YmFja2luZ1N0b3JlU2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHJvdW5kZWRJbnRTaXpl
KHNjYWxlZFNpemUpOwogfQogCi11bnNpZ25lZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0
ZXNQZXJQaXhlbCgpIGNvbnN0CitXZWJDb3JlOjpQaXhlbEZvcm1hdCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6cGl4ZWxGb3JtYXQoKSBjb25zdAogewotICAgIHN3aXRjaCAoc3VyZmFjZUJ1ZmZl
ckZvcm1hdCgpKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6QkdSQTog
cmV0dXJuIDQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6WVVWNDIyOiBy
ZXR1cm4gMjsKICNpZiBIQVZFKElPU1VSRkFDRV9SR0IxMCkKLSAgICBjYXNlIFdlYkNvcmU6OklP
U3VyZmFjZTo6Rm9ybWF0OjpSR0IxMDogcmV0dXJuIDQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpJT1N1
cmZhY2U6OkZvcm1hdDo6UkdCMTBBODogcmV0dXJuIDU7CisgICAgaWYgKG1fYWNjZWxlcmF0ZXNE
cmF3aW5nICYmIG1fZGVlcENvbG9yKQorICAgICAgICByZXR1cm4gbV9pc09wYXF1ZSA/IFdlYkNv
cmU6OlBpeGVsRm9ybWF0OjpSR0IxMCA6IFdlYkNvcmU6OlBpeGVsRm9ybWF0OjpSR0IxMEE4Owog
I2VuZGlmCisKKyAgICByZXR1cm4gV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OkJHUkE4OworfQorCit1
bnNpZ25lZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6Ynl0ZXNQZXJQaXhlbCgpIGNvbnN0Cit7
CisgICAgc3dpdGNoIChwaXhlbEZvcm1hdCgpKSB7CisgICAgY2FzZSBXZWJDb3JlOjpQaXhlbEZv
cm1hdDo6UkdCQTg6IHJldHVybiA0OworICAgIGNhc2UgV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OkJH
UkE4OiByZXR1cm4gNDsKKyAgICBjYXNlIFdlYkNvcmU6OlBpeGVsRm9ybWF0OjpSR0IxMDogcmV0
dXJuIDQ7CisgICAgY2FzZSBXZWJDb3JlOjpQaXhlbEZvcm1hdDo6UkdCMTBBODogcmV0dXJuIDU7
CiAgICAgfQogICAgIHJldHVybiA0OwogfQogCiB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Ojpzd2FwVG9WYWxpZEZyb250QnVmZmVyKCkKIHsKLSAgICBXZWJDb3JlOjpJbnRTaXplIGV4cGFu
ZGVkU2NhbGVkU2l6ZSA9IGJhY2tpbmdTdG9yZVNpemUoKTsKLQotICAgIGlmIChtX2FjY2VsZXJh
dGVzRHJhd2luZykgewotICAgICAgICBpZiAoIW1fYmFja0J1ZmZlci5zdXJmYWNlIHx8IG1fYmFj
a0J1ZmZlci5zdXJmYWNlLT5pc0luVXNlKCkpIHsKLSAgICAgICAgICAgIHN0ZDo6c3dhcChtX2Jh
Y2tCdWZmZXIsIG1fc2Vjb25kYXJ5QmFja0J1ZmZlcik7Ci0gICAgICAgICAgICBpZiAobV9iYWNr
QnVmZmVyLnN1cmZhY2UgJiYgbV9iYWNrQnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkKLSAgICAg
ICAgICAgICAgICBtX2JhY2tCdWZmZXIuZGlzY2FyZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
c3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CisgICAgc3RkOjpzd2FwKG1f
ZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7CiAKLSAgICAgICAgaWYgKCFtX2Zyb250QnVmZmVy
LnN1cmZhY2UpCi0gICAgICAgICAgICBtX2Zyb250QnVmZmVyLnN1cmZhY2UgPSBXZWJDb3JlOjpJ
T1N1cmZhY2U6OmNyZWF0ZShleHBhbmRlZFNjYWxlZFNpemUsIFdlYkNvcmU6OnNSR0JDb2xvclNw
YWNlUmVmKCksIHN1cmZhY2VCdWZmZXJGb3JtYXQoKSk7CisgICAgaWYgKG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBzZXRCdWZmZXJWb2xhdGls
aXR5KEJ1ZmZlclR5cGU6OkZyb250LCBmYWxzZSk7CisgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRlcmluZ0ZvcihXZWJDb3JlOjpSZW5kZXJpbmdQdXJw
b3NlOjpET00pKSB7CisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBtX2xheWVy
LT5jb250ZXh0KCktPmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpLmNyZWF0ZUlt
YWdlQnVmZmVyKGJhY2tpbmdTdG9yZVNpemUoKSwgbV9hY2NlbGVyYXRlc0RyYXdpbmcgPyBXZWJD
b3JlOjpSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFdlYkNvcmU6OlJlbmRlcmluZ01vZGU6
OlVuYWNjZWxlcmF0ZWQsIDEsIFdlYkNvcmU6OkNvbG9yU3BhY2U6OlNSR0IsIHBpeGVsRm9ybWF0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVz
RHJhd2luZyk7Ci0gICAgc3RkOjpzd2FwKG1fZnJvbnRCdWZmZXIsIG1fYmFja0J1ZmZlcik7Ci0K
LSAgICBpZiAoIW1fZnJvbnRCdWZmZXIuYml0bWFwKSB7Ci0gICAgICAgIFNoYXJlYWJsZUJpdG1h
cDo6Q29uZmlndXJhdGlvbiBiaXRtYXBDb25maWd1cmF0aW9uOwotICAgICAgICBiaXRtYXBDb25m
aWd1cmF0aW9uLmlzT3BhcXVlID0gbV9pc09wYXF1ZTsKLSAgICAgICAgbV9mcm9udEJ1ZmZlci5i
aXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZShleHBhbmRlZFNjYWxlZFNp
emUsIGJpdG1hcENvbmZpZ3VyYXRpb24pOwotICAgIH0KKyAgICBpZiAobV9hY2NlbGVyYXRlc0Ry
YXdpbmcpCisgICAgICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25j
cmV0ZUltYWdlQnVmZmVyPEFjY2VsZXJhdGVkSW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6
Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUoKSwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwg
cGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CisgICAgZWxzZQorICAgICAgICBtX2Zyb250QnVmZmVy
LmltYWdlQnVmZmVyID0gV2ViQ29yZTo6Q29uY3JldGVJbWFnZUJ1ZmZlcjxVbmFjY2VsZXJhdGVk
SW1hZ2VCdWZmZXJTaGFyZWFibGVCYWNrZW5kPjo6Y3JlYXRlKGJhY2tpbmdTdG9yZVNpemUoKSwg
MSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQoKSwgbnVsbHB0cik7CiB9
CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewotICAgIEFTU0VS
VCghbV9mcm9udENvbnRleHRQZW5kaW5nRmx1c2gpOworICAgIEFTU0VSVCghbV9mcm9udEJ1ZmZl
ckZsdXNoZXIpOwogCiAgICAgbV9sYXN0RGlzcGxheVRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKIApAQCAtMjM0LDQzICsyMTgsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
ZGlzcGxheSgpCiAgICAgfQogCiAgICAgV2ViQ29yZTo6SW50UmVjdCBleHBhbmRlZFNjYWxlZExh
eWVyQm91bmRzKFdlYkNvcmU6OkludFBvaW50KCksIGV4cGFuZGVkU2NhbGVkU2l6ZSk7Ci0gICAg
Ym9vbCB3aWxsUGFpbnRFbnRpcmVCYWNraW5nU3RvcmUgPSBtX2RpcnR5UmVnaW9uLmNvbnRhaW5z
KGxheWVyQm91bmRzKTsKIAogICAgIHN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKTsKIAotICAgIGlm
IChtX2FjY2VsZXJhdGVzRHJhd2luZykgewotICAgICAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZl
SW1hZ2U+IGJhY2tJbWFnZTsKLSAgICAgICAgaWYgKG1fYmFja0J1ZmZlci5zdXJmYWNlICYmICF3
aWxsUGFpbnRFbnRpcmVCYWNraW5nU3RvcmUpCi0gICAgICAgICAgICBiYWNrSW1hZ2UgPSBXZWJD
b3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYmFja0J1ZmZlci5zdXJmYWNlLT5jcmVhdGVJbWFn
ZSgpLmdldCgpKTsKLQotICAgICAgICBpZiAobV9mcm9udEJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAg
ICAgICAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVy
LnN1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwotCi0gICAgICAgICAgICBjb250ZXh0
LnNjYWxlKFdlYkNvcmU6OkZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICAgICAgY29udGV4dC50
cmFuc2xhdGUoMCwgLWV4cGFuZGVkU2NhbGVkU2l6ZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBk
cmF3SW5Db250ZXh0KGNvbnRleHQsIFdURk1vdmUoYmFja0ltYWdlKSk7Ci0KLSAgICAgICAgICAg
IG1fZnJvbnRCdWZmZXIuc3VyZmFjZS0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpOwotICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKCFtX2FjY2VsZXJhdGVzRHJhd2luZyk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ+IGNvbnRl
eHQgPSBtX2Zyb250QnVmZmVyLmJpdG1hcC0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0ID0gbV9mcm9udEJ1ZmZlci5pbWFnZUJ1
ZmZlci0+Y29udGV4dCgpOwogCi0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4g
YmFja0ltYWdlOwotICAgICAgICBpZiAobV9iYWNrQnVmZmVyLmJpdG1hcCAmJiAhd2lsbFBhaW50
RW50aXJlQmFja2luZ1N0b3JlKQotICAgICAgICAgICAgYmFja0ltYWdlID0gV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OmNyZWF0ZShtX2JhY2tCdWZmZXIuYml0bWFwLT5tYWtlQ0dJbWFnZSgpLmdldCgp
KTsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRlU2F2ZXIoY29u
dGV4dCk7CiAKLSAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SW5Db250ZXh0
KCpjb250ZXh0LCBXVEZNb3ZlKGJhY2tJbWFnZSkpOwotICAgIH0KLSAgICAKLSAgICBtX2xheWVy
LT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7Ci0gICAg
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRy
YXdJbkNvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZWZQdHI8V2Vi
Q29yZTo6TmF0aXZlSW1hZ2U+JiYgYmFja0ltYWdlKQotewogICAgIFdlYkNvcmU6OkZsb2F0U2l6
ZSBzY2FsZWRTaXplID0gbV9zaXplOwogICAgIHNjYWxlZFNpemUuc2NhbGUobV9zY2FsZSk7CiAg
ICAgV2ViQ29yZTo6SW50UmVjdCBzY2FsZWRMYXllckJvdW5kcyhXZWJDb3JlOjpJbnRQb2ludCgp
LCBXZWJDb3JlOjpyb3VuZGVkSW50U2l6ZShzY2FsZWRTaXplKSk7CkBAIC0yOTUsOCArMjQ5LDEw
IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRyYXdJbkNvbnRleHQoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSCiAgICAgICAgIG1fcGFpbnRpbmdSZWN0cy5hcHBl
bmQoc2NhbGVkUmVjdCk7CiAgICAgfQogCi0gICAgaWYgKGJhY2tJbWFnZSkKLSAgICAgICAgY29u
dGV4dC5kcmF3TmF0aXZlSW1hZ2UoKmJhY2tJbWFnZSwgc2NhbGVkTGF5ZXJCb3VuZHMuc2l6ZSgp
LCBzY2FsZWRMYXllckJvdW5kcywgc2NhbGVkTGF5ZXJCb3VuZHMsIHsgV2ViQ29yZTo6Q29tcG9z
aXRlT3BlcmF0b3I6OkNvcHkgfSk7CisgICAgaWYgKCFtX2RpcnR5UmVnaW9uLmNvbnRhaW5zKGxh
eWVyQm91bmRzKSkgeworICAgICAgICBBU1NFUlQobV9iYWNrQnVmZmVyLmltYWdlQnVmZmVyKTsK
KyAgICAgICAgY29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKm1fYmFja0J1ZmZlci5pbWFnZUJ1ZmZl
ciwgeyAwLCAwIH0pOworICAgIH0KIAogICAgIGlmIChtX3BhaW50aW5nUmVjdHMuc2l6ZSgpID09
IDEpIHsKICAgICAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNjYWxlZFBhaW50aW5nUmVjdCA9IG1f
cGFpbnRpbmdSZWN0c1swXTsKQEAgLTM1Nyw3ICszMTMsMTQgQEAgdm9pZCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIFIKICAgICBtX2RpcnR5UmVnaW9uID0gV2ViQ29yZTo6UmVnaW9uKCk7CiAgICAgbV9wYWlu
dGluZ1JlY3RzLmNsZWFyKCk7CiAKLSAgICBtX2Zyb250Q29udGV4dFBlbmRpbmdGbHVzaCA9IGNv
bnRleHQucGxhdGZvcm1Db250ZXh0KCk7CisgICAgbV9mcm9udEJ1ZmZlckZsdXNoZXIgPSBtX2Zy
b250QnVmZmVyLmltYWdlQnVmZmVyLT5jcmVhdGVGbHVzaGVyKCk7CisKKyAgICBtX2xheWVyLT5v
d25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJMYXllckRpZERpc3BsYXkobV9sYXllcik7CisKKyAgICAv
LyBGSVhNRTogVGhpcyBtZXRob2QgaGFzIGEgd2VpcmQgbmFtZS4gVGhpcyBpcyAic3VibWl0IHdv
cmsiLgorICAgIG1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXItPmZsdXNoRHJhd2luZ0NvbnRleHRB
bmRDb21taXQoKTsKKworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjplbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCB2b2lkICheYmxvY2spKFdlYkNvcmU6OkZsb2F0UmVjdCkpCkBAIC0zNzcs
NDUgKzM0MCw0NyBAQCB2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnVtZXJhdGVSZWN0
c0JlaW5nRHJhd24oV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JgogCiB2b2lkIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjphcHBseUJhY2tpbmdTdG9yZVRvTGF5ZXIoQ0FMYXllciAqbGF5ZXIsIExh
eWVyQ29udGVudHNUeXBlIGNvbnRlbnRzVHlwZSkKIHsKKyAgICBBU1NFUlQobV9idWZmZXJIYW5k
bGUpOwogICAgIGxheWVyLmNvbnRlbnRzT3BhcXVlID0gbV9pc09wYXF1ZTsKIAogICAgIGlmIChh
Y2NlbGVyYXRlc0RyYXdpbmcoKSkgewogICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzVHlwZSkgewot
ICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpJT1N1cmZhY2U6Ci0gICAgICAgICAgICBp
ZiAoIW1fZnJvbnRCdWZmZXIuc3VyZmFjZSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChtX2Zy
b250QnVmZmVyU2VuZFJpZ2h0KTsKLSAgICAgICAgICAgICAgICBtX2Zyb250QnVmZmVyLnN1cmZh
Y2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RGTW92ZShtX2Zy
b250QnVmZmVyU2VuZFJpZ2h0KSwgV2ViQ29yZTo6c1JHQkNvbG9yU3BhY2VSZWYoKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBsYXllci5jb250ZW50cyA9IG1fZnJvbnRCdWZmZXIuc3Vy
ZmFjZSA/IG1fZnJvbnRCdWZmZXIuc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7Cisg
ICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZTogeworICAgICAgICAgICAg
YXV0byBzdXJmYWNlID0gV2ViQ29yZTo6SU9TdXJmYWNlOjpjcmVhdGVGcm9tU2VuZFJpZ2h0KFdU
Rk1vdmUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oKm1fYnVmZmVySGFuZGxlKSksIFdlYkNvcmU6
OnNSR0JDb2xvclNwYWNlUmVmKCkpOworICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSBzdXJm
YWNlID8gc3VyZmFjZS0+YXNMYXllckNvbnRlbnRzKCkgOiBuaWw7CiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogICAgICAgICBjYXNlIExheWVyQ29udGVudHNUeXBlOjpDQU1hY2hQb3J0
OgotICAgICAgICAgICAgQVNTRVJUKG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQpOwotICAgICAgICAg
ICAgbGF5ZXIuY29udGVudHMgPSAoX19icmlkZ2UgaWQpYWRvcHRDRihDQU1hY2hQb3J0Q3JlYXRl
KG1fZnJvbnRCdWZmZXJTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpKSkuZ2V0KCk7CisgICAgICAg
ICAgICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClhZG9wdENGKENBTWFjaFBvcnRDcmVh
dGUoV1RGOjpnZXQ8TWFjaFNlbmRSaWdodD4oKm1fYnVmZmVySGFuZGxlKS5sZWFrU2VuZFJpZ2h0
KCkpKS5nZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBBU1NFUlQoIWFjY2VsZXJhdGVzRHJhd2luZygpKTsKLSAgICBsYXll
ci5jb250ZW50cyA9IChfX2JyaWRnZSBpZCltX2Zyb250QnVmZmVyLmJpdG1hcC0+bWFrZUNHSW1h
Z2VDb3B5KCkuZ2V0KCk7CisgICAgYXV0byBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZShXVEY6OmdldDxTaGFyZWFibGVCaXRtYXA6OkhhbmRsZT4oKm1fYnVmZmVySGFuZGxlKSk7Cisg
ICAgbGF5ZXIuY29udGVudHMgPSAoX19icmlkZ2UgaWQpYml0bWFwLT5tYWtlQ0dJbWFnZUNvcHko
KS5nZXQoKTsKIH0KIAotUmV0YWluUHRyPENHQ29udGV4dFJlZj4gUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OnRha2VGcm9udENvbnRleHRQZW5kaW5nRmx1c2goKQorc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+IFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjp0YWtlUGVuZGluZ0ZsdXNoZXIoKQogewotICAgIHJldHVybiBXVEZNb3ZlKG1fZnJvbnRD
b250ZXh0UGVuZGluZ0ZsdXNoKTsKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX2Zyb250QnVm
ZmVyRmx1c2hlciwgbnVsbHB0cik7CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZSB0eXBlLCBib29sIGlzVm9sYXRpbGUpCiB7
CisgICAgaWYgKCFhY2NlbGVyYXRlc0RyYXdpbmcoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
ICAgICAvLyBSZXR1cm4gdmFsdWUgaXMgdHJ1ZSBpZiB3ZSBzdWNjZWVkZWQgaW4gbWFraW5nIHZv
bGF0aWxlLgogICAgIGF1dG8gbWFrZVZvbGF0aWxlID0gW10gKEJ1ZmZlciYgYnVmZmVyKSAtPiBi
b29sIHsKLSAgICAgICAgaWYgKCFidWZmZXIuc3VyZmFjZSB8fCBidWZmZXIuaXNWb2xhdGlsZSkK
KyAgICAgICAgaWYgKCFidWZmZXIuaW1hZ2VCdWZmZXIgfHwgYnVmZmVyLmlzVm9sYXRpbGUpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICBidWZmZXIuc3VyZmFjZS0+cmVsZWFz
ZUdyYXBoaWNzQ29udGV4dCgpOworICAgICAgICBidWZmZXIuaW1hZ2VCdWZmZXItPnJlbGVhc2VH
cmFwaGljc0NvbnRleHQoKTsKIAotICAgICAgICBpZiAoIWJ1ZmZlci5zdXJmYWNlLT5pc0luVXNl
KCkpIHsKLSAgICAgICAgICAgIGJ1ZmZlci5zdXJmYWNlLT5zZXRJc1ZvbGF0aWxlKHRydWUpOwor
ICAgICAgICBpZiAoIWJ1ZmZlci5pbWFnZUJ1ZmZlci0+aXNJblVzZSgpKSB7CisgICAgICAgICAg
ICBidWZmZXIuaW1hZ2VCdWZmZXItPnNldFZvbGF0aWxlKHRydWUpOwogICAgICAgICAgICAgYnVm
ZmVyLmlzVm9sYXRpbGUgPSB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KQEAgLTQyNSwxMyArMzkwLDEzIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNl
dEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZSB0eXBlLCBib29sIGlzVm9sYXRpCiAKICAgICAv
LyBSZXR1cm4gdmFsdWUgaXMgdHJ1ZSBpZiB3ZSBuZWVkIHRvIHJlcGFpbnQuCiAgICAgYXV0byBt
YWtlTm9uVm9sYXRpbGUgPSBbXSAoQnVmZmVyJiBidWZmZXIpIC0+IGJvb2wgewotICAgICAgICBp
ZiAoIWJ1ZmZlci5zdXJmYWNlIHx8ICFidWZmZXIuaXNWb2xhdGlsZSkKKyAgICAgICAgaWYgKCFi
dWZmZXIuaW1hZ2VCdWZmZXIgfHwgIWJ1ZmZlci5pc1ZvbGF0aWxlKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgICAgIGF1dG8gcHJldmlvdXNTdGF0ZSA9IGJ1ZmZlci5zdXJmYWNl
LT5zZXRJc1ZvbGF0aWxlKGZhbHNlKTsKKyAgICAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gYnVm
ZmVyLmltYWdlQnVmZmVyLT5zZXRWb2xhdGlsZShmYWxzZSk7CiAgICAgICAgIGJ1ZmZlci5pc1Zv
bGF0aWxlID0gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIHByZXZpb3VzU3RhdGUgPT0gV2ViQ29y
ZTo6SU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OkVtcHR5OworICAgICAgICByZXR1cm4gcHJldmlv
dXNTdGF0ZSA9PSBXZWJDb3JlOjpWb2xhdGlsaXR5U3RhdGU6OkVtcHR5OwogICAgIH07CiAKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTQ2MSwyMCArNDI2LDEwIEBAIGJvb2wgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OnNldEJ1ZmZlclZvbGF0aWxpdHkoQnVmZmVyVHlwZSB0eXBlLCBib29sIGlz
Vm9sYXRpCiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OkJ1ZmZlcjo6ZGlzY2FyZCgp
CiB7Ci0gICAgaWYgKHN1cmZhY2UpCi0gICAgICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6bW92ZVRv
UG9vbChXVEZNb3ZlKHN1cmZhY2UpKTsKICAgICBpc1ZvbGF0aWxlID0gZmFsc2U7Ci0gICAgYml0
bWFwID0gbnVsbHB0cjsKLX0KLQotV2ViQ29yZTo6SU9TdXJmYWNlOjpGb3JtYXQgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OnN1cmZhY2VCdWZmZXJGb3JtYXQoKSBjb25zdAotewotI2lmIEhBVkUo
SU9TVVJGQUNFX1JHQjEwKQotICAgIGlmIChtX2RlZXBDb2xvcikKLSAgICAgICAgcmV0dXJuIG1f
aXNPcGFxdWUgPyBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdDo6UkdCMTAgOiBXZWJDb3JlOjpJ
T1N1cmZhY2U6OkZvcm1hdDo6UkdCMTBBODsKLSNlbmRpZgotCi0gICAgcmV0dXJuIFdlYkNvcmU6
OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOworICAgIGlmIChpbWFnZUJ1ZmZlcikKKyAgICAgICAg
aW1hZ2VCdWZmZXItPnJlbGVhc2VCdWZmZXJUb1Bvb2woKTsKKyAgICBpbWFnZUJ1ZmZlciA9IG51
bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgKaW5kZXggYWIxNDdiZTRhOWE3YWEzODk3OGYzMmMyOWZl
MWRjNGMzMWYxNGI0Yy4uZDI4MGRhZWU5OGQ3OTE1M2NiNmY5YzFmZDBhODY3N2M5MWI3Y2VkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld1NuYXBzaG90U3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCkBAIC04Myw3
ICs4Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U3VyZmFjZShzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6SU9TdXJmYWNlPik7CiAKLSAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OlN1cmZhY2VT
dGF0ZSBzZXRWb2xhdGlsZShib29sKTsKKyAgICBXZWJDb3JlOjpWb2xhdGlsaXR5U3RhdGUgc2V0
Vm9sYXRpbGUoYm9vbCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZU1hYy5tbQppbmRleCBj
NDNiZDM3ZGY5YzYwNTliMjY2NjE4OTY4OWUyOWE2OGIwYjFjMDRiLi4yMjNhNDQ0ZjgwYjViMTlk
NTM5N2RkOTNmZjczYzIwM2E2YTA5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bXBvcnQgPENvcmVHcmFwaGljcy9Db3JlR3JhcGhpY3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvSU9T
dXJmYWNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ltYWdlQnVmZmVyLmg+CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9RdWFydHpDb3JlU1BJLmg+CkBA
IC03NCwxNSArNzUsMTUgQEAgdm9pZCBWaWV3U25hcHNob3Q6OmNsZWFySW1hZ2UoKQogICAgIG1f
c3VyZmFjZSA9IG51bGxwdHI7CiB9CiAKLVdlYkNvcmU6OklPU3VyZmFjZTo6U3VyZmFjZVN0YXRl
IFZpZXdTbmFwc2hvdDo6c2V0Vm9sYXRpbGUoYm9vbCBiZWNvbWVWb2xhdGlsZSkKK1dlYkNvcmU6
OlZvbGF0aWxpdHlTdGF0ZSBWaWV3U25hcHNob3Q6OnNldFZvbGF0aWxlKGJvb2wgYmVjb21lVm9s
YXRpbGUpCiB7CiAgICAgaWYgKFZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0b24oKS5kaXNhYmxl
U25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZygpKQotICAgICAgICByZXR1cm4gV2ViQ29yZTo6
SU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OlZhbGlkOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6
Vm9sYXRpbGl0eVN0YXRlOjpWYWxpZDsKIAogICAgIGlmICghbV9zdXJmYWNlKQotICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6SU9TdXJmYWNlOjpTdXJmYWNlU3RhdGU6OkVtcHR5OworICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6Vm9sYXRpbGl0eVN0YXRlOjpFbXB0eTsKIAotICAgIHJldHVybiBtX3N1
cmZhY2UtPnNldElzVm9sYXRpbGUoYmVjb21lVm9sYXRpbGUpOworICAgIHJldHVybiBtX3N1cmZh
Y2UtPnNldFZvbGF0aWxlKGJlY29tZVZvbGF0aWxlKTsKIH0KIAogaWQgVmlld1NuYXBzaG90Ojph
c0xheWVyQ29udGVudHMoKQpAQCAtOTAsNyArOTEsNyBAQCBpZCBWaWV3U25hcHNob3Q6OmFzTGF5
ZXJDb250ZW50cygpCiAgICAgaWYgKCFtX3N1cmZhY2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCi0gICAgaWYgKHNldFZvbGF0aWxlKGZhbHNlKSAhPSBXZWJDb3JlOjpJT1N1cmZhY2U6OlN1
cmZhY2VTdGF0ZTo6VmFsaWQpIHsKKyAgICBpZiAoc2V0Vm9sYXRpbGUoZmFsc2UpICE9IFdlYkNv
cmU6OlZvbGF0aWxpdHlTdGF0ZTo6VmFsaWQpIHsKICAgICAgICAgY2xlYXJJbWFnZSgpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUu
aAppbmRleCBhNTk2MzA2OWY2NjE4MTgzZDA3OGE2NGMyZGVhY2MyZDgzYTRjZGUzLi40MDJjMjhh
NDBlODI2MzllNTQzMjIwZWY5MTA3OGQ5YjFjOTRkMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kSGFuZGxlLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2lu
ZyBJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUgPSBWYXJpYW50PAotI2lmIFBMQVRGT1JNKENPQ09B
KQorI2lmIFBMQVRGT1JNKENPQ09BKSAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgYWJvdXQgSU9T
dXJmYWNlLgogICAgIE1hY2hTZW5kUmlnaHQsCiAjZW5kaWYKICAgICBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAppbmRleCAwNGVkMTJlMmJlMjEyMGI4
MGI4NzUyNjM5NDAzODViNzZhY2Q3OTM4Li5kMWIyYzUzNmE3OGExZWVjY2VmOTc2ZmU0NjExNmU0
NWVhOTk1ZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBo
aWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaApAQCAtNDAsNiArNDAsMjIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ7CiAK
K2NsYXNzIFRocmVhZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXIgOiBwdWJsaWMgV2ViQ29y
ZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlciB7CitwdWJsaWM6CisgICAgVGhyZWFkU2Fm
ZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZm
ZXIpCisgICAgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IHN5bmNocm9ub3VzbHkg
d2FpdCBvbiB0aGUgZmx1c2ggdW50aWwgZmx1c2goKSBpcyBjYWxsZWQsIGJ1dCBoYXZlIHRvIGlu
dmVudAorICAgICAgICAvLyBhIHRocmVhZC1zYWZlIHdheSB0byB3YWl0IG9uIHRoZSBpbmNvbWlu
ZyBtZXNzYWdlLgorICAgICAgICBpbWFnZUJ1ZmZlci5mbHVzaERyYXdpbmdDb250ZXh0KCk7Cisg
ICAgfQorCisgICAgdm9pZCBmbHVzaCgpIG92ZXJyaWRlCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEJhY2tlbmRUeXBlPgogY2xhc3MgUmVtb3RlSW1h
Z2VCdWZmZXJQcm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SW1hZ2VCdWZmZXI8
QmFja2VuZFR5cGU+LCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpEZWxl
Z2F0ZSwgcHVibGljIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtQnVmZmVyV3JpdGluZ0NsaWVu
dCB7CiAgICAgdXNpbmcgQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpEaXNw
bGF5TGlzdDo6SW1hZ2VCdWZmZXI8QmFja2VuZFR5cGU+OwpAQCAtNzYsNiArOTIsMTIgQEAgcHVi
bGljOgogICAgICAgICBtX3JlY2VpdmVkRmx1c2hJZGVudGlmaWVyID0gZmx1c2hJZGVudGlmaWVy
OwogICAgIH0KIAorICAgIEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSBjcmVhdGVJbWFnZUJ1ZmZl
ckJhY2tlbmRIYW5kbGUoKQorICAgIHsKKyAgICAgICAgZW5zdXJlQmFja2VuZENyZWF0ZWQoKTsK
KyAgICAgICAgcmV0dXJuIG1fYmFja2VuZC0+Y3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxl
KCk7CisgICAgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUmVtb3RlSW1hZ2VCdWZmZXJQcm94eShjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUsIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYg
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQogICAgICAgICA6IEJhc2VEaXNwbGF5TGlzdElt
YWdlQnVmZmVyKHNpemUsIHRoaXMpCkBAIC0zMDUsNiArMzI3LDExIEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIGZsdXNoRHJhd2luZ0NvbnRleHQoKTsKICAgICB9CiAKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gY3JlYXRlRmx1c2hl
cigpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlVW5pcXVlPFRocmVh
ZFNhZmVSZW1vdGVJbWFnZUJ1ZmZlckZsdXNoZXI+KCp0aGlzKTsKKyAgICB9CisKICAgICBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIG1fc2VudEZsdXNoSWRlbnRpZmllcjsK
ICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Rmx1c2hJZGVudGlmaWVyIG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk+IG1f
cmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA2
NTlmNmZlYTMyMWNhZDI3YWM5ODU0YTZmMjJiN2Q3ZTk3NmM1MzUxLi4zMzQ3NjRhY2UyYThjNDM4
NTg4YjMxOTgwNjJmMzY1YTM2NmU4YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtOTAz
LDE5ICs5MDMsMTMgQEAgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGYKIAogI2lmIEVOQUJMRShHUFVf
UFJPQ0VTUykKIAotUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiBXZWJDaHJvbWVDbGllbnQ6
OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKLSAgICAgICAgbV9yZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkgPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmNyZWF0ZSgpOwotICAg
IHJldHVybiAqbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci19CiAKIFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFNp
emUmIHNpemUsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSwgUmVuZGVyaW5nUHVycG9zZSBw
dXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2NhbGUsIENvbG9yU3BhY2UgY29sb3JTcGFjZSwgUGl4
ZWxGb3JtYXQgcGl4ZWxGb3JtYXQpIGNvbnN0CiB7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zaG91bGRVc2VSZW1vdGVSZW5kZXJpbmdGb3IocHVycG9zZSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eSgpLmNyZWF0ZUltYWdlQnVmZmVyKHNpemUsIHJlbmRlcmluZ01vZGUsIHJlc29sdXRpb25T
Y2FsZSwgY29sb3JTcGFjZSwgcGl4ZWxGb3JtYXQpOworICAgIHJldHVybiBtX3BhZ2UuZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgcmVu
ZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1hdCk7CiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXgg
OTczOGQxYjM5NTI2NzBmMDA4NDhkMTE3YTZlM2I4ZmM0MjEyZGYwMS4uZWMxNGZkYjE2YzgxY2Mx
MjcwNmNmY2I1OWU5OWYyY2QzMzc2MGRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzcsNyAr
MzcsNiBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIDogYm9vbDsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKIGNs
YXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKIApAQCAtMjQzLDcgKzI0Miw2IEBAIHByaXZh
dGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKFdlYkNvcmU6OlBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBmaW5h
bDsKIAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkmIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpIGNvbnN0OwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4gY3JlYXRlSW1hZ2VCdWZmZXIoY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6UmVuZGVyaW5nTW9kZSwgV2ViQ29yZTo6UmVuZGVyaW5n
UHVycG9zZSwgZmxvYXQgcmVzb2x1dGlvblNjYWxlLCBXZWJDb3JlOjpDb2xvclNwYWNlLCBXZWJD
b3JlOjpQaXhlbEZvcm1hdCkgY29uc3QgZmluYWw7CiAjZW5kaWYKIApAQCAtNDA1LDkgKzQwMyw2
IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jp
em9udGFsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWlu
RnJhbWVIYXNWZXJ0aWNhbFNjcm9sbGJhciB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKQotICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQ
cm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7Ci0jZW5kaWYKICAgICBXZWJQYWdl
JiBtX3BhZ2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQuaAppbmRleCA0ZjdiOTgzY2Q4MGVhNTU3NWQ4YjM5MDMzMjU2ZGMwMWExN2M5YWUwLi43
MDJjNjc5ZmZiYzE2ODdjNDMwMTc4NDIyOGI0ZTM3YTZmNTZjYzExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZTsKIGNsYXNzIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTsKK2NsYXNzIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsK
IGNsYXNzIFdlYlBhZ2U7CiAKIC8vIEZJWE1FOiBUaGlzIGNsYXNzIGRvZXNuJ3QgZG8gbXVjaCBu
b3cuIFJvbGwgaW50byBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYT8KQEAgLTc3LDYgKzc4LDgg
QEAgcHVibGljOgogICAgIGJvb2wgbmV4dFJlbmRlcmluZ1VwZGF0ZVJlcXVpcmVzU3luY2hyb25v
dXNJbWFnZURlY29kaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0UmVuZGVyaW5nVXBkYXRlUmVx
dWlyZXNTeW5jaHJvbm91c0ltYWdlRGVjb2Rpbmc7IH0KIAogICAgIHZvaWQgYWRvcHRMYXllcnNG
cm9tQ29udGV4dChSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CisKKyAgICBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHkmIGVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOwogICAg
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYm9vbCBjYW5TaG93V2hpbGVMb2NrZWQo
KSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQu
bW0KaW5kZXggNTIyMDU1ZTJkOTU2N2M2ZGUzMTY4NzM1YWIzODdiMDZmYWQ1NzBkNi4uMDBkNTU3
NTc1YzBmNzczOWQ5NTdiYTJkOWVlOTA5YmUyMDYzYWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0KQEAgLTE4OCw0ICsxODgsOSBAQCB2b2lk
IFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmFuaW1hdGlvbkRpZEVuZChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheQogICAgICAgICBpdC0+dmFsdWUtPmFuaW1hdGlvbkVuZGVkKGtl
eSk7CiB9CiAKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKK3sKKyAgICByZXR1cm4g
bV93ZWJQYWdlLmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLmgKaW5kZXggMWUyNTY2MmIwMjdhNzE3YmFlNmI3ZGUwNTgzZGUyNjYy
OWFmZDY0OS4uMGFmNDAxOTQ4NDBhZmU2ODg4YTg2MTM4MmZkZDZjOWU0ZTI2ZDFjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKQEAg
LTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUGxhdGZvcm1DQUxh
eWVyOworY2xhc3MgVGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xMjUsMTcgKzEyNiwxNyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgQmFj
a2luZ1N0b3JlRmx1c2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxCYWNraW5nU3Rv
cmVGbHVzaGVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEJhY2tpbmdTdG9y
ZUZsdXNoZXI+IGNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiwgVmVjdG9yPFJldGFpblB0cjxDR0NvbnRleHRSZWY+Pik7CisgICAgICAgIHN0YXRp
YyBSZWY8QmFja2luZ1N0b3JlRmx1c2hlcj4gY3JlYXRlKElQQzo6Q29ubmVjdGlvbiosIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+Pik7CiAKICAgICAgICAgdm9pZCBmbHVzaCgp
OwogICAgICAgICBib29sIGhhc0ZsdXNoZWQoKSBjb25zdCB7IHJldHVybiBtX2hhc0ZsdXNoZWQ7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25u
ZWN0aW9uKiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIFZlY3RvcjxSZXRhaW5QdHI8
Q0dDb250ZXh0UmVmPj4pOworICAgICAgICBCYWNraW5nU3RvcmVGbHVzaGVyKElQQzo6Q29ubmVj
dGlvbiosIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXI+Pik7CiAKICAgICAgICAg
UmVmUHRyPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiBtX2NvbW1pdEVuY29kZXI7Ci0gICAgICAgIFZlY3RvcjxSZXRh
aW5QdHI8Q0dDb250ZXh0UmVmPj4gbV9jb250ZXh0c1RvRmx1c2g7CisgICAgICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IG1f
Zmx1c2hlcnM7CiAKICAgICAgICAgc3RkOjphdG9taWM8Ym9vbD4gbV9oYXNGbHVzaGVkOwogICAg
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0KaW5kZXggOTY0MmM0NWQxZjhiMmU5OGQ1NGE5ZTU0MmY1YTFlZjI2ZjFmOGM2MC4uYTAy
MzIyODcxNmExZWU0MTU5YzEyNDlmNWZiNTAxNDY3MmYyMzVjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtMzg0LDEzICsz
ODQsMTMgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6dXBkYXRlUmVuZGVyaW5n
KCkKIAogICAgIC8vIEZJWE1FOiBNb3ZlIGFsbCBiYWNraW5nIHN0b3JlIGZsdXNoaW5nIG1hbmFn
ZW1lbnQgdG8gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLgogICAgIGJvb2wgaGFk
QW55Q2hhbmdlZEJhY2tpbmdTdG9yZSA9IGZhbHNlOwotICAgIFZlY3RvcjxSZXRhaW5QdHI8Q0dD
b250ZXh0UmVmPj4gY29udGV4dHNUb0ZsdXNoOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzOwogICAgIGZv
ciAoYXV0byYgbGF5ZXIgOiBsYXllclRyYW5zYWN0aW9uLmNoYW5nZWRMYXllcnMoKSkgewogICAg
ICAgICBpZiAobGF5ZXItPnByb3BlcnRpZXMoKS5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKSB7CiAgICAgICAgICAgICBo
YWRBbnlDaGFuZ2VkQmFja2luZ1N0b3JlID0gdHJ1ZTsKICAgICAgICAgICAgIGlmIChsYXllci0+
cHJvcGVydGllcygpLmJhY2tpbmdTdG9yZSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvIGNv
bnRleHRQZW5kaW5nRmx1c2ggPSBsYXllci0+cHJvcGVydGllcygpLmJhY2tpbmdTdG9yZS0+dGFr
ZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpKQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
c1RvRmx1c2guYXBwZW5kKGNvbnRleHRQZW5kaW5nRmx1c2gpOworICAgICAgICAgICAgICAgIGlm
IChhdXRvIHBlbmRpbmdGbHVzaGVyID0gbGF5ZXItPnByb3BlcnRpZXMoKS5iYWNraW5nU3RvcmUt
PnRha2VQZW5kaW5nRmx1c2hlcigpKQorICAgICAgICAgICAgICAgICAgICBmbHVzaGVycy5hcHBl
bmQoV1RGTW92ZShwZW5kaW5nRmx1c2hlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
QEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp1cGRh
dGVSZW5kZXJpbmcoKQogICAgIGlmIChoYWRBbnlDaGFuZ2VkQmFja2luZ1N0b3JlKQogICAgICAg
ICBiYWNraW5nU3RvcmVDb2xsZWN0aW9uLnNjaGVkdWxlVm9sYXRpbGl0eVRpbWVyKCk7CiAKLSAg
ICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tp
bmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNvbnRleHRz
VG9GbHVzaCkpOworICAgIFJlZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVyPiBiYWNraW5nU3RvcmVG
bHVzaGVyID0gQmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCksIFdURk1vdmUoY29tbWl0RW5jb2RlciksIFdU
Rk1vdmUoZmx1c2hlcnMpKTsKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFj
a2luZ1N0b3JlRmx1c2hlcjsKIAogICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLmlkZW50aWZp
ZXIoKTsKQEAgLTQ1MSwxNSArNDUxLDE1IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6Om1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpCiAgICAgcmV0dXJu
IG1fcmVtb3RlTGF5ZXJUcmVlQ29udGV4dC0+YmFja2luZ1N0b3JlQ29sbGVjdGlvbigpLm1hcmtB
bGxCYWNraW5nU3RvcmVWb2xhdGlsZUltbWVkaWF0ZWx5SWZQb3NzaWJsZSgpOwogfQogCi1SZWY8
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI+IFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUoSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVy
LCBWZWN0b3I8UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHRzVG9GbHVzaCkKK1JlZjxS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcj4gUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1
c2hlcj4+IGZsdXNoZXJzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyKGNvbm5lY3Rpb24sIFdURk1vdmUo
ZW5jb2RlciksIFdURk1vdmUoY29udGV4dHNUb0ZsdXNoKSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyKGNv
bm5lY3Rpb24sIFdURk1vdmUoZW5jb2RlciksIFdURk1vdmUoZmx1c2hlcnMpKSk7CiB9CiAKLVJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3Rv
cmVGbHVzaGVyKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4gZW5jb2RlciwgVmVjdG9yPFJldGFpblB0cjxDR0NvbnRleHRSZWY+PiBjb250
ZXh0c1RvRmx1c2gpCitSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1
c2hlcjo6QmFja2luZ1N0b3JlRmx1c2hlcihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4+IGZsdXNoZXJzKQogICAg
IDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgLCBtX2NvbW1pdEVuY29kZXIoV1RGTW92
ZShlbmNvZGVyKSkKLSAgICAsIG1fY29udGV4dHNUb0ZsdXNoKFdURk1vdmUoY29udGV4dHNUb0Zs
dXNoKSkKKyAgICAsIG1fZmx1c2hlcnMoV1RGTW92ZShmbHVzaGVycykpCiAgICAgLCBtX2hhc0Zs
dXNoZWQoZmFsc2UpCiB7CiB9CkBAIC00NzAsOCArNDcwLDggQEAgdm9pZCBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0b3JlRmx1c2hlcjo6Zmx1c2goKQogCiAgICAgVHJhY2VT
Y29wZSB0cmFjaW5nU2NvcGUoQmFja2luZ1N0b3JlRmx1c2hTdGFydCwgQmFja2luZ1N0b3JlRmx1
c2hFbmQpOwogICAgIAotICAgIGZvciAoYXV0byYgY29udGV4dCA6IG1fY29udGV4dHNUb0ZsdXNo
KQotICAgICAgICBDR0NvbnRleHRGbHVzaChjb250ZXh0LmdldCgpKTsKKyAgICBmb3IgKGF1dG8m
IGZsdXNoZXIgOiBtX2ZsdXNoZXJzKQorICAgICAgICBmbHVzaGVyLT5mbHVzaCgpOwogICAgIG1f
aGFzRmx1c2hlZCA9IHRydWU7CiAKICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRNZXNzYWdlKFdURk1v
dmUobV9jb21taXRFbmNvZGVyKSwgeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMTlhMjBiNzZhNmJlMTc2NTRiNTc4MWQxM2I2OGEwOTVi
Y2NjYmUwMC4uMWZhNmYyOGUwMTQxNGQwYzM2OGIyMjNmNjhiMmQzNjZiOGQ5NDQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm94eS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIK
ICNpbmNsdWRlICJQcmludEluZm8uaCIKKyNpbmNsdWRlICJSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JVSS5oIgogI2luY2x1ZGUgIlJl
bW90ZVdlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIK
QEAgLTcyODgsNiArNzI4OSwxNSBAQCB2b2lkIFdlYlBhZ2U6Om5vdGlmeVBhZ2VPZkFwcEJvdW5k
QmVoYXZpb3IoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCitSZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kUHJveHkmIFdlYlBhZ2U6OmVuc3VyZVJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSgpCit7CisgICAgaWYgKCFtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkKKyAg
ICAgICAgbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkgPSBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OmNyZWF0ZSgpOworICAgIHJldHVybiAqbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxF
QVNFX0xPR19JRl9BTExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggMjYzZmY3ZTU0ZGY2YTgzNDA5OWM5YTMwMGZiZDdmNTU0OGQ4ZGIyNC4uMzEz
MTBjZTQ2NThmZjIyOGQwZTU1NjhiNTNiZDVmZjNjM2I5ZTc1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMjQ2LDYgKzI0Niw3IEBAIGNsYXNzIE5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKIGNsYXNzIFBERlBsdWdpbjsKIGNs
YXNzIFBhZ2VCYW5uZXI7CiBjbGFzcyBQbHVnaW5WaWV3OworY2xhc3MgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5OwogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBUZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHk7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXI7CkBAIC0xMzc0LDYgKzEzNzUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzeW5jaHJv
bml6ZUNPUlNEaXNhYmxpbmdQYXR0ZXJuc1dpdGhOZXR3b3JrUHJvY2VzcygpOwogCisjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKQorICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBX
ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOwogCkBAIC0yMTg2LDYgKzIxOTEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXBjVGVz
dGluZ0FQSUVuYWJsZWQgeyBmYWxzZSB9OwogICAgIHVpbnQ2NF90IG1fdmlzaXRlZExpbmtUYWJs
ZUlEOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgc3RkOjp1bmlxdWVf
cHRyPFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5k
UHJveHk7CisjZW5kaWYKIH07CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414155</attachid>
            <date>2020-11-14 22:35:13 -0800</date>
            <delta_ts>2020-11-15 01:31:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218928-20201114223512.patch</filename>
            <type>text/plain</type>
            <size>57932</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjAxMDVkMjBlYTU4Y2Vm
MGQ0ODBmNGJiOGE2NTQwMDU0MWViODUxZC4uMDRiYjVkOTUwNWQ1MDA5ZDIxM2U1ZjgyNjU5Njlk
NmNjYjMwOGJhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIwLTExLTEzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEluaXRpYWwgaW1w
bGVtZW50YXRpb24gb2YgRE9NIHJlbmRlcmluZyB2aWEgdGhlIEdQVSBwcm9jZXNzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg5MjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOyB3aWxs
IGJlIGNvdmVyZWQgYnkgYWxsIGV4aXN0aW5nIERPTSByZW5kZXJpbmcgdGVzdHMgaW4gR1BVIHBy
b2Nlc3MgbW9kZS4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlQnVmZmVyQmFja2VuZDo6aXNJblVzZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUJ1ZmZlckJhY2tlbmQ6OnJlbGVhc2VHcmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpzZXRWb2xhdGlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZUJ1ZmZlckJhY2tlbmQ6OnJlbGVhc2VCdWZmZXJUb1Bvb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXJCYWNrZW5kOjpjcmVhdGVGbHVzaGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklPU3Vy
ZmFjZVBvb2w6OnRha2VTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OklPU3VyZmFjZVBvb2w6
Om1hcmtPbGRlclN1cmZhY2VzUHVyZ2VhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRT
YWZlSW1hZ2VCdWZmZXJGbHVzaGVyQ0c6OlRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNoZXJDRyk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y29udGV4dENvbG9yU3Bh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OnNldHVwQ29udGV4
dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y3JlYXRl
Rmx1c2hlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBD
b250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHQmFja2VuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklP
U3VyZmFjZUJhY2tlbmQ6OmNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VC
dWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0luVXNlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6cmVsZWFzZUdyYXBoaWNzQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OnNldFZvbGF0aWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6cmVsZWFz
ZUJ1ZmZlclRvUG9vbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJJT1N1cmZhY2VCYWNrZW5kLmg6CisgICAgICAgIEFkZCBpc0luVXNlLCBzZXRWb2xhdGlsZSwg
YW5kIHJlbGVhc2VHcmFwaGljc0NvbnRleHQgdG8gSW1hZ2VCdWZmZXIsCisgICAgICAgIHRvIG1h
bmFnZSB2b2xhdGlsZSBzdXJmYWNlczsgdGhleSdyZSBvbmx5IGltcGxlbWVudGVkIGZvciBpbi1w
cm9jZXNzCisgICAgICAgIElPU3VyZmFjZSByaWdodCBub3csIGluIG9yZGVyIHRvIGtlZXAgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmUgd29ya2luZworICAgICAgICBhZnRlciB0cmFuc2l0aW9uaW5n
IGl0IHRvIEltYWdlQnVmZmVyLiBBIGZ1dHVyZSBwYXRjaCB3aWxsIGRldGVybWluZQorICAgICAg
ICBob3cgdG8gaW1wbGVtZW50IHRoaXMgbWVjaGFuaXNtIGZvciByZW1vdGUgSU9TdXJmYWNlcy4K
KworICAgICAgICBBZGQgY3JlYXRlRmx1c2hlciB0byBJbWFnZUJ1ZmZlciwgd2hpY2ggcmV0dXJu
cyBhbiBvYmplY3QgdGhhdCBjYW4KKyAgICAgICAgYmUgdG9zc2VkIHRvIGEgYmFja2dyb3VuZCBx
dWV1ZSwgYW5kIGhhcyBvbmUgbWV0aG9kOiBmbHVzaCgpLCB3aGljaAorICAgICAgICBibG9ja3Mg
dW50aWwgdGhlIEltYWdlQnVmZmVyJ3Mgb3VzdGFuZGluZyBwYWludGluZyBpcyBmbHVzaGVkLiBU
aGlzIGlzCisgICAgICAgIGN1cnJlbnRseSBpbXBsZW1lbnRlZCBmb3IgQ0cganVzdCBieSBjYWxs
aW5nIENHQ29udGV4dEZsdXNoLiBUaGlzCisgICAgICAgIGlzIHVzZWQgdG8gYWJzdHJhY3Qgb3V0
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJ3MgYmFja2dyb3VuZC10aHJlYWQKKyAgICAgICAgZmx1
c2ggb2YgYWxsIHN1cmZhY2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNl
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzdGF0ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpJT1N1cmZhY2U6OnNldFZvbGF0aWxlKToKKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6SU9TdXJmYWNlOjpzZXRJc1ZvbGF0aWxlKTog
RGVsZXRlZC4KKyAgICAgICAgTWFrZSB1c2Ugb2YgVm9sYXRpbGl0eVN0YXRlIGluc3RlYWQgb2Yg
U3VyZmFjZVN0YXRlLgorCisKIDIwMjAtMTEtMTEgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1vdmUgbW9yZSBXZWJLaXRMZWdhY3kgcHJlZmVyZW5jZXMgYm91bmQg
dG8gU2V0dGluZ3MgdG8gV2ViUHJlZmVyZW5jZXMueWFtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjNDM3NWM5NmRk
ZDI2YTlkZTEyYjMzMGE3MjNkOWUxMDE1OTJkZjQ4Li5mNTQ2ZmViOWVhZDhlZmM3M2ZmODQwNmY2
ZmY3M2RhYTExNjAxMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTExLTEzICBU
aW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEluaXRpYWwg
aW1wbGVtZW50YXRpb24gb2YgRE9NIHJlbmRlcmluZyB2aWEgdGhlIEdQVSBwcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg5MjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBTaGFyZWQvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZlciBjb25zdCk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6Om9wZXJhdG9yIGJvb2wgY29u
c3QpOgorICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmUubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnBpeGVsRm9y
bWF0IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmJ5
dGVzUGVyUGl4ZWwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6c3dhcFRvVmFsaWRGcm9udEJ1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcik6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp0YWtlUGVuZGluZ0ZsdXNoZXIpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpCdWZmZXI6OmRpc2NhcmQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjp0
YWtlRnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cmZhY2VCdWZmZXJGb3JtYXQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICBSZWltcGxlbWVudCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSBpbiB0ZXJt
cyBvZiBJbWFnZUJ1ZmZlciBpbnN0ZWFkIG9mCisgICAgICAgIHVzaW5nIFNoYXJlYWJsZUJpdG1h
cCArIElPU3VyZmFjZSBleHBsaWNpdGx5LgorICAgICAgICBXZSB1c2UgQ29uY3JldGVJbWFnZUJ1
ZmZlciB2ZXJzaW9ucyBvZiB0aGUgc2hhcmVhYmxlIGJhY2tlbmRzIGluIHRoZSBXZWJDb250ZW50
IHByb2Nlc3MKKyAgICAgICAgaW4gdGhlIG5vbi1HUFUtcHJvY2VzcyBjYXNlLCBhbmQgbm9ybWFs
IERpc3BsYXlMaXN0LWJhY2tlZCBSZW1vdGVJbWFnZUJ1ZmZlclByb3hpZXMKKyAgICAgICAgaW4g
dGhlIEdQVSBwcm9jZXNzIGNhc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvVmlld1NuYXBzaG90
U3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlTWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpWaWV3U25hcHNob3Q6OnNldFZvbGF0aWxlKToKKyAgICAgICAg
KFdlYktpdDo6Vmlld1NuYXBzaG90Ojphc0xheWVyQ29udGVudHMpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcjo6VGhyZWFkU2Fm
ZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlcik6CisgICAgICAgIEFkZCBhIGhhY2sgdG8gZW11bGF0
ZSBUaHJlYWRTYWZlUmVtb3RlSW1hZ2VCdWZmZXJGbHVzaGVyOyByaWdodCBub3csCisgICAgICAg
IHdlJ2xsIHN5bmNocm9ub3VzbHkgZmx1c2ggb24gdGhlIG1haW4gdGhyZWFkIHdoZW4gY3JlYXRp
bmcgdGhlIGZsdXNoZXI7CisgICAgICAgIGEgZnV0dXJlIHBhdGNoIHdpbGwgbW92ZSB0aGlzIGlu
dG8gdGhlIGZsdXNoKCkgbWV0aG9kIHNvIHRoYXQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUKKyAg
ICAgICAgY2FuIGRvIGl0IG9uIGEgc2Vjb25kYXJ5IHF1ZXVlLgorCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUltYWdlQnVmZmVyUHJveHk6OmNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZUltYWdlQnVmZmVyIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjplbnN1cmVSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kUHJveHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250
ZXh0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVDb250ZXh0OjplbnN1cmVS
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3Rv
cmVGbHVzaGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OkJhY2tpbmdTdG9yZUZsdXNoZXI6OmZsdXNoKToKKyAgICAgICAgUmVpbXBsZW1lbnQgQmFja2lu
Z1N0b3JlRmx1c2hlciBpbiB0ZXJtcyBvZiB0aGUgYWJzdHJhY3QgVGhyZWFkU2FmZUltYWdlQnVm
ZmVyRmx1c2hlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICBN
b3ZlIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSBmcm9tIFdlYkNocm9tZUNsaWVudCB0byBX
ZWJQYWdlLCBzbyB0aGF0CisgICAgICAgIG90aGVyIG5vbi1XZWJDb3JlIGNsaWVudHMgY2FuIHVz
ZSBpdCB3aXRob3V0IGhhdmluZyB0byB0aGluayBhYm91dCBXZWJDaHJvbWVDbGllbnQuCisKIDIw
MjAtMTEtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
UnVuTG9vcDo6VGltZXIgY29uc3RydWN0b3IgdGFraW5nIGluIGEgV1RGOjpGdW5jdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDVjZTFiZjllNTExYjZiMDJjNjg2MmJlYzUyMDA3MzVmYTcyNTRmYTIuLmU0ZDI3ZmNjNTM0MTll
Mjg5ZTE0M2RjOTFiYjAxOTA3NTZlZjYxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc1Myw2ICs3NTMsOCBAQAogCQkyRDZG
M0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVybGF5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDZGM0U4QjFDMUVDQjFDMDA2MURCRDQg
LyogTW9ja1BhZ2VPdmVybGF5LmggKi87IH07CiAJCTJENzBCQTEzMTgwNzREREYwMDAxOTA4QSAv
KiBQbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ3MEJBMTIxODA3NERERjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXll
ckNvY29hLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMkQ3NkJCODIxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3NkJCODAxOTQ1NjMyNDAw
Q0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTJENzcwNUM3MjU1Mjc2Q0QwMDFEMEM5NCAvKiBQbGF0Zm9y
bUltYWdlQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJENzcwNUM5
MjU1MjhEMzQwMDFEMEM5NCAvKiBJbWFnZUJ1ZmZlckNHQml0bWFwQmFja2VuZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJCQUMzQUEyM0UxRTU0NDAw
OEQ3NDFDIC8qIEltYWdlQnVmZmVyQ0dCaXRtYXBCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ3REEwRjIyNDM1RUIxOTAwRjA0OEQx
IC8qIFdlYlZpZXdWaXN1YWxJZGVudGlmaWNhdGlvbk92ZXJsYXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0RBMEVGMjQzNUVCMTcwMEYwNDhEMSAv
KiBXZWJWaWV3VmlzdWFsSWRlbnRpZmljYXRpb25PdmVybGF5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ3RUQwQUIxQkFFOTkxNzAwNDNCM0U1
IC8qIFRpbWVyRXZlbnRCYXNlZE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEN0VEMEE5MUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFz
ZWRNb2NrLmggKi87IH07CiAJCTJEODI4N0Y3MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9j
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
ODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzIxNDAsNiArMzIxNDIsNyBA
QAogCQkJCUIyQTEwQjkyMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1ZmZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2Vu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTUwNjQwQjAyNDA3NTg3RTAwQUFFMDQ1IC8qIEltYWdl
QnVmZmVyQ0dCYWNrZW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDc3MDVDOTI1NTI4RDM0MDAx
RDBDOTQgLyogSW1hZ2VCdWZmZXJDR0JpdG1hcEJhY2tlbmQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcyN0E3RjNBMjQwNzhCODQwMDREMjkzMSAvKiBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyQTEwRDkxMEIzODE4QkQwMDA5OUFBNCAvKiBJbWFnZUJ1
ZmZlclBpcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEM0UyMUREMjE4MzQ0NEEwMEU2NkY1NSAv
KiBJbWFnZUJ1ZmZlclV0aWxpdGllc0NHLmggaW4gSGVhZGVycyAqLywKQEAgLTMzNjcwLDYgKzMz
NjczLDcgQEAKIAkJCQlBNzIzRjc3QjE0ODRDQTRDMDA4QzZEQkUgLyogUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTk1MUQ1NEY1RkIwMEREN0M2OCAvKiBQ
bGF0Zm9ybUdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyNkQ1NkUyMjUzQUUyOEQwMDAy
RUY5MCAvKiBQbGF0Zm9ybUltYWdlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyRDc3MDVDNzI1NTI3
NkNEMDAxRDBDOTQgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTUwNjQwQUYyNDA3NTgyRDAwQUFFMDQ1IC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzVDNDc2ODA5QUM0RDQzMDBBNkFBQjQgLyogUGxhdGZvcm1L
ZXlib2FyZEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwNTYyRjk2MTE1NzNGODhGMDAzMUNB
MTYgLyogUGxhdGZvcm1MYXllci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db25jcmV0ZUltYWdlQnVmZmVyLmgKaW5kZXggOGY4
NGU5YmEyMmNjZTVkOTI3NjJiNWFjNjc5MjMyMmVlZGEzNjlhMS4uMTI3NWM0MDhlM2YxNTc1NTY0
YWJlODAzNzViYjI3MWFlZWFmYThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvQ29uY3JldGVJbWFnZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbmNyZXRlSW1hZ2VCdWZmZXIuaApAQCAtMjUwLDYgKzI1MCwzOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICBib29sIGlz
SW5Vc2UoKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGF1dG8qIGJhY2tlbmQg
PSBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGJhY2tlbmQtPmlz
SW5Vc2UoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHZvaWQgcmVsZWFz
ZUdyYXBoaWNzQ29udGV4dCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoYXV0byogYmFj
a2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICByZXR1cm4gYmFja2Vu
ZC0+cmVsZWFzZUdyYXBoaWNzQ29udGV4dCgpOworICAgIH0KKworICAgIFZvbGF0aWxpdHlTdGF0
ZSBzZXRWb2xhdGlsZShib29sIGlzVm9sYXRpbGUpIG92ZXJyaWRlCisgICAgeworICAgICAgICBp
ZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVhdGVkKCkpCisgICAgICAgICAgICBy
ZXR1cm4gYmFja2VuZC0+c2V0Vm9sYXRpbGUoaXNWb2xhdGlsZSk7CisgICAgICAgIHJldHVybiBW
b2xhdGlsaXR5U3RhdGU6OlZhbGlkOworICAgIH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJl
YWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIGlmIChhdXRvKiBiYWNrZW5kID0gZW5zdXJlQmFja2VuZENyZWF0ZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybiBiYWNrZW5kLT5jcmVhdGVGbHVzaGVyKCk7CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZUJ1ZmZlclRvUG9vbCgpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoYXV0byogYmFja2VuZCA9IGVuc3VyZUJhY2tlbmRDcmVh
dGVkKCkpCisgICAgICAgICAgICBiYWNrZW5kLT5yZWxlYXNlQnVmZmVyVG9Qb29sKCk7CisgICAg
fQorCiAgICAgc3RkOjp1bmlxdWVfcHRyPEJhY2tlbmRUeXBlPiBtX2JhY2tlbmQ7CiAgICAgUmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVm
ZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCmlu
ZGV4IDg2ZjMxODIxM2NjOGE0ZjU1MDQzZDVlZTA4YWI1ZGI3ZTE3OThmM2YuLmUzZGFhNTMwYjQy
MzE1MTg5MWFmODI5NGVmM2JjODg5MTAxZGU1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuaApAQCAtODMsNiArODMsMTMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBz
aXplX3QgZXh0ZXJuYWxNZW1vcnlDb3N0KCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBib29s
IGlzSW5Vc2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VHcmFwaGljc0Nv
bnRleHQoKSA9IDA7CisgICAgdmlydHVhbCBWb2xhdGlsaXR5U3RhdGUgc2V0Vm9sYXRpbGUoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQnVmZmVyVG9Qb29sKCkgPSAwOworCisg
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4g
Y3JlYXRlRmx1c2hlcigpID0gMDsKKwogICAgIHZpcnR1YWwgUmVmUHRyPE5hdGl2ZUltYWdlPiBj
b3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSA9IENvcHlCYWNraW5nU3RvcmUpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIFJlZlB0cjxJbWFnZT4gY29weUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkgPSBDb3B5QmFja2luZ1N0b3JlLCBQcmVzZXJ2ZVJlc29sdXRpb24gPSBQcmVzZXJ2ZVJlc29s
dXRpb246Ok5vKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggNWUyZmEwMjEyMzhlMzVjZTE5
YzBhNDVmYWFhYzM5OGM3MWNlZTNjOC4uZGFjYzgwNTJlY2Y2NmU2MWVmNWRiY2U4ZmZiNGFlNDNi
ZjQzNmZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTYxLDYgKzYxLDIwIEBAIGVudW0gY2xhc3MgUGl4ZWxG
b3JtYXQgOiB1aW50OF90IHsKICAgICBSR0IxMEE4LAogfTsKIAorZW51bSBjbGFzcyBWb2xhdGls
aXR5U3RhdGUgOiB1aW50OF90IHsKKyAgICBWYWxpZCwKKyAgICBFbXB0eQorfTsKKworY2xhc3Mg
VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hl
cik7CitwdWJsaWM6CisgICAgVGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcigpID0gZGVmYXVs
dDsKKyAgICB2aXJ0dWFsIH5UaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyKCkgPSBkZWZhdWx0
OworICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKK307CisKIGNsYXNzIEltYWdlQnVmZmVy
QmFja2VuZCB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+SW1hZ2VCdWZm
ZXJCYWNrZW5kKCkgPSBkZWZhdWx0OwpAQCAtMTAyLDYgKzExNiwxMyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgdmlydHVhbCBib29sIGNvcHlUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCYsIEdDR0xlbnVtLCBQbGF0Zm9ybUdMT2JqZWN0LCBHQ0dMZW51bSwg
Ym9vbCwgYm9vbCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBp
c0luVXNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZUdyYXBoaWNzQ29udGV4dCgpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFs
IFZvbGF0aWxpdHlTdGF0ZSBzZXRWb2xhdGlsZShib29sKSB7IHJldHVybiBWb2xhdGlsaXR5U3Rh
dGU6OlZhbGlkOyB9CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VCdWZmZXJUb1Bvb2woKSB7IH0K
KworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFRocmVhZFNhZmVJbWFnZUJ1ZmZlckZsdXNo
ZXI+IGNyZWF0ZUZsdXNoZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRVcHBlckxlZnRDb3JuZXIgPSBmYWxzZTsKICAgICBz
dGF0aWMgY29uc3RleHByIGJvb2wgaXNBY2NlbGVyYXRlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSU9TdXJmYWNlUG9vbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAppbmRl
eCAxYjBlMWI2MWYyODNmZTUzMjdmNTk1ZDdkMzY4MDRmYTI4YzAxMjljLi43NjQ4NTZlMzcyYWNl
MjM5ZWYwOTNkNTA3ZWNlMWFkNjU2YmI4N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JT1N1cmZhY2VQb29sLmNwcApAQCAtMTMxLDcgKzEzMSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElPU3VyZmFjZVBvb2w6OnRha2VTdXJmYWNl
KEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlCiAKICAgICAgICAgZGlkUmVtb3ZlU3VyZmFjZSgq
c3VyZmFjZSwgZmFsc2UpOwogCi0gICAgICAgIHN1cmZhY2UtPnNldElzVm9sYXRpbGUoZmFsc2Up
OworICAgICAgICBzdXJmYWNlLT5zZXRWb2xhdGlsZShmYWxzZSk7CiAKICAgICAgICAgRFVNUF9Q
T09MX1NUQVRJU1RJQ1MoInRha2VTdXJmYWNlIC0gdGFraW5nIik7CiAgICAgICAgIHJldHVybiBz
dXJmYWNlOwpAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IElP
U3VyZmFjZVBvb2w6OnRha2VTdXJmYWNlKEludFNpemUgc2l6ZSwgQ0dDb2xvclNwYWNlCiAgICAg
ICAgIG1faW5Vc2VTdXJmYWNlcy5yZW1vdmUoc3VyZmFjZUl0ZXIpOwogICAgICAgICBkaWRSZW1v
dmVTdXJmYWNlKCpzdXJmYWNlLCB0cnVlKTsKIAotICAgICAgICBzdXJmYWNlLT5zZXRJc1ZvbGF0
aWxlKGZhbHNlKTsKKyAgICAgICAgc3VyZmFjZS0+c2V0Vm9sYXRpbGUoZmFsc2UpOwogCiAgICAg
ICAgIERVTVBfUE9PTF9TVEFUSVNUSUNTKCJ0YWtlU3VyZmFjZSAtIHRha2luZyBpbi11c2UiKTsK
ICAgICAgICAgcmV0dXJuIHN1cmZhY2U7CkBAIC0yOTgsNyArMjk4LDcgQEAgYm9vbCBJT1N1cmZh
Y2VQb29sOjptYXJrT2xkZXJTdXJmYWNlc1B1cmdlYWJsZSgpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCi0gICAgICAgIHN1cmZhY2VBbmREZXRhaWxzLmtleS0+c2V0SXNWb2xh
dGlsZSh0cnVlKTsKKyAgICAgICAgc3VyZmFjZUFuZERldGFpbHMua2V5LT5zZXRWb2xhdGlsZSh0
cnVlKTsKICAgICAgICAgc3VyZmFjZUFuZERldGFpbHMudmFsdWUuaGFzTWFya2VkUHVyZ2VhYmxl
ID0gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmNwcAppbmRleCBkNjYwYTU2ZmM2
NjRlOGQ0ZGQwNWFlOWIxMmM0ODIwNmE3NjMyZmQyLi4zMGI4NWU0ZjY0NTYxNWI5MTZiMzM1YjBj
NGNiNWY3NTY2MTMyYjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuY3BwCkBAIC00Myw2ICs0Mywy
MyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFRocmVhZFNhZmVJbWFnZUJ1ZmZl
ckZsdXNoZXJDRyA6IHB1YmxpYyBUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBUaHJlYWRTYWZlSW1hZ2VCdWZm
ZXJGbHVzaGVyQ0coQ0dDb250ZXh0UmVmIGNvbnRleHQpCisgICAgICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZmx1c2goKSBvdmVycmlkZQorICAgIHsK
KyAgICAgICAgQ0dDb250ZXh0Rmx1c2gobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gbV9jb250ZXh0OworfTsKKwogUmV0YWlu
UHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZmZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNw
YWNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKICNpZiBQTEFURk9STShDT0NP
QSkKQEAgLTU3LDkgKzc0LDggQEAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4gSW1hZ2VCdWZm
ZXJDR0JhY2tlbmQ6OmNvbnRleHRDb2xvclNwYWNlKGNvbnN0IEdyYXBoaWMKICAgICByZXR1cm4g
bnVsbHB0cjsKICNlbmRpZgogfQotIwogCi12b2lkIEltYWdlQnVmZmVyQ0dCYWNrZW5kOjpzZXR1
cENvbnRleHQoKQordm9pZCBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6c2V0dXBDb250ZXh0KCkgY29u
c3QKIHsKICAgICAvLyBUaGUgaW5pdGlhbCBDVE0gbWF0Y2hlcyBEaXNwbGF5TGlzdDo6UmVjb3Jk
ZXI6OmNsaXBUb0RyYXdpbmdDb21tYW5kcygpJ3MgaW5pdGlhbCBDVE0uCiAgICAgY29udGV4dCgp
LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwpAQCAtMTkwLDYgKzIwNiwxMSBAQCBTdHJpbmcgSW1h
Z2VCdWZmZXJDR0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRp
b25hbDxkb3VibGU+CiAgICAgcmV0dXJuICJkYXRhOiwiX3M7CiB9CiAKK3N0ZDo6dW5pcXVlX3B0
cjxUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBJbWFnZUJ1ZmZlckNHQmFja2VuZDo6Y3Jl
YXRlRmx1c2hlcigpCit7CisgICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxUaHJlYWRTYWZlSW1h
Z2VCdWZmZXJGbHVzaGVyQ0c+KGNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKSk7Cit9CisKICNp
ZiBVU0UoQUNDRUxFUkFURSkKIHN0YXRpYyBpbmxpbmUgdkltYWdlX0J1ZmZlciBtYWtlVkltYWdl
QnVmZmVyKHVuc2lnbmVkIGJ5dGVzUGVyUm93LCB1aW50OF90KiByb3dzLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VCdWZmZXJDR0JhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVyQ0dCYWNrZW5kLmgKaW5kZXggNGEzNGE4YWU1YmM2MjBmOTQxMWY0
YmQxYmNkYjA1MGVkYjg2OTBkNC4uMzY3ZGY3Mzg5MmQ3Zjc2NzY1ODE0MzFjNzIwNDA5ZThmNDc2
OWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VCdWZmZXJDR0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHQmFja2VuZC5oCkBAIC00NCwxMSArNDQsMTMgQEAgcHVibGljOgog
ICAgIFN0cmluZyB0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0IG92ZXJyaWRlOwogICAgIFZl
Y3Rvcjx1aW50OF90PiB0b0RhdGEoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgT3B0aW9uYWw8ZG91
YmxlPiBxdWFsaXR5KSBjb25zdCBvdmVycmlkZTsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxUaHJl
YWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGU7CisKIHBy
b3RlY3RlZDoKICAgICB1c2luZyBJbWFnZUJ1ZmZlckJhY2tlbmQ6OkltYWdlQnVmZmVyQmFja2Vu
ZDsKIAogICAgIHN0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclNwYWNlUmVmPiBjb250ZXh0Q29sb3JT
cGFjZShjb25zdCBHcmFwaGljc0NvbnRleHQmKTsKLSAgICB2b2lkIHNldHVwQ29udGV4dCgpOwor
ICAgIHZvaWQgc2V0dXBDb250ZXh0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiB0b0NGRGF0YShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBPcHRpb25hbDxkb3VibGU+
IHF1YWxpdHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3Q7CiAKICNpZiBVU0UoQUNDRUxFUkFU
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
QnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwCmluZGV4IGZlOWQzYjJmOWVm
YTYwYjY4MjlhNGYzYTQxMTI3OWQ2Y2U1NTkwYjguLmFkM2ZmMWQ3OTc3MjAzNzY0MGUyZDY5OTU0
MTI4ODYwYjc3NDhjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcApA
QCAtMTA2LDcgKzEwNiwxMyBAQCBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQ6OkltYWdlQnVm
ZmVySU9TdXJmYWNlQmFja2VuZChjb25zdCBGbG9hdFNpemUmIGxvZ2ljYQogCiBHcmFwaGljc0Nv
bnRleHQmIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Y29udGV4dCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fc3VyZmFjZS0+ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCk7CisKKyAgICBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQgPSBtX3N1cmZhY2UtPmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
OworICAgIGlmIChtX25lZWRzU2V0dXBDb250ZXh0KSB7CisgICAgICAgIG1fbmVlZHNTZXR1cENv
bnRleHQgPSBmYWxzZTsKKyAgICAgICAgc2V0dXBDb250ZXh0KCk7CisgICAgfQorICAgIHJldHVy
biBjb250ZXh0OwogfQogCiB2b2lkIEltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZDo6Zmx1c2hD
b250ZXh0KCkKQEAgLTE4NCw2ICsxOTAsMjcgQEAgSU9TdXJmYWNlKiBJbWFnZUJ1ZmZlcklPU3Vy
ZmFjZUJhY2tlbmQ6OnN1cmZhY2UoKQogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7CiB9CiAK
K2Jvb2wgSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kOjppc0luVXNlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9zdXJmYWNlLT5pc0luVXNlKCk7Cit9CisKK3ZvaWQgSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kOjpyZWxlYXNlR3JhcGhpY3NDb250ZXh0KCkKK3sKKyAgICBtX25lZWRzU2V0
dXBDb250ZXh0ID0gdHJ1ZTsKKyAgICByZXR1cm4gbV9zdXJmYWNlLT5yZWxlYXNlR3JhcGhpY3ND
b250ZXh0KCk7Cit9CisKK1ZvbGF0aWxpdHlTdGF0ZSBJbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQ6OnNldFZvbGF0aWxlKGJvb2wgaXNWb2xhdGlsZSkKK3sKKyAgICByZXR1cm4gbV9zdXJmYWNl
LT5zZXRWb2xhdGlsZShpc1ZvbGF0aWxlKTsKK30KKwordm9pZCBJbWFnZUJ1ZmZlcklPU3VyZmFj
ZUJhY2tlbmQ6OnJlbGVhc2VCdWZmZXJUb1Bvb2woKQoreworICAgIElPU3VyZmFjZTo6bW92ZVRv
UG9vbChXVEZNb3ZlKG1fc3VyZmFjZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBIQVZFKElPU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVySU9TdXJmYWNlQmFja2VuZC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5k
LmgKaW5kZXggZWJlYmZhZjk2ZGI0NTEyNjNiZTQ1MzNiYzY1YzA1N2IyZWFlZmNlMS4uZGU5ODIx
MTFlNTJjMTJlZGIwOGRjNzg4YjUwZWNlZmIzNjUwNzY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJJT1N1
cmZhY2VCYWNrZW5kLmgKQEAgLTYzLDYgKzYzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHB1dElt
YWdlRGF0YShBbHBoYVByZW11bHRpcGxpY2F0aW9uIGlucHV0Rm9ybWF0LCBjb25zdCBJbWFnZURh
dGEmLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRQb2ludCYgZGVzdFBvaW50LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uIGRlc3RGb3JtYXQpIG92ZXJyaWRlOwogICAgIElPU3VyZmFj
ZSogc3VyZmFjZSgpOwogCisgICAgYm9vbCBpc0luVXNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWxlYXNlR3JhcGhpY3NDb250ZXh0KCkgb3ZlcnJpZGU7CisgICAgVm9sYXRpbGl0eVN0
YXRlIHNldFZvbGF0aWxlKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFzZUJ1ZmZlclRv
UG9vbCgpIG92ZXJyaWRlOworCiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzT3JpZ2luQXRV
cHBlckxlZnRDb3JuZXIgPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0FjY2Vs
ZXJhdGVkID0gdHJ1ZTsKIApAQCAtNzIsNiArNzcsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBtX3N1cmZhY2U7CiAgICAgbXV0YWJsZSBib29sIG1fcmVx
dWlyZXNEcmF3QWZ0ZXJQdXRJbWFnZURhdGEgeyBmYWxzZSB9OworCisgICAgbXV0YWJsZSBib29s
IG1fbmVlZHNTZXR1cENvbnRleHQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SU9TdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1
cmZhY2UuaAppbmRleCAyMDU2NWM5YWY5ZDhiMjRkMmZjYjc4YzM1ODJlNmE3NmFlYTg2NWE5Li4w
ZWNhYzU0YzkwNDg4OTJhNTY1ZDJmODIyYTA1ZjZhNjE1ZWYxYmRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UuaApAQCAtNTAsNiAr
NTAsNyBAQCBjbGFzcyBJbWFnZUJ1ZmZlcjsKICNlbmRpZgogCiBlbnVtIGNsYXNzIFBpeGVsRm9y
bWF0IDogdWludDhfdDsKK2VudW0gY2xhc3MgVm9sYXRpbGl0eVN0YXRlIDogdWludDhfdDsKIAog
Y2xhc3MgSU9TdXJmYWNlIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTEyOCwxOSArMTI5LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0Nv
bnRleHQmIGVuc3VyZUdyYXBoaWNzQ29udGV4dCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIENHQ29u
dGV4dFJlZiBlbnN1cmVQbGF0Zm9ybUNvbnRleHQoY29uc3QgSG9zdFdpbmRvdyogPSBudWxscHRy
KTsKIAotICAgIGVudW0gY2xhc3MgU3VyZmFjZVN0YXRlIHsKLSAgICAgICAgVmFsaWQsCi0gICAg
ICAgIEVtcHR5Ci0gICAgfTsKLQogICAgIC8vIFF1ZXJ5aW5nIHZvbGF0aWxpdHkgY2FuIGJlIGV4
cGVuc2l2ZSwgc28gaW4gY2FzZXMgd2hlcmUgdGhlIHN1cmZhY2UgaXMKLSAgICAvLyBnb2luZyB0
byBiZSB1c2VkIGltbWVkaWF0ZWx5LCB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBzZXRJc1ZvbGF0
aWxlIHRvCisgICAgLy8gZ29pbmcgdG8gYmUgdXNlZCBpbW1lZGlhdGVseSwgdXNlIHRoZSByZXR1
cm4gdmFsdWUgb2Ygc2V0Vm9sYXRpbGUgdG8KICAgICAvLyBkZXRlcm1pbmUgd2hldGhlciB0aGUg
ZGF0YSB3YXMgcHVyZ2VkLCBpbnN0ZWFkIG9mIGZpcnN0IGNhbGxpbmcgc3RhdGUoKSBvciBpc1Zv
bGF0aWxlKCkuCi0gICAgU3VyZmFjZVN0YXRlIHN0YXRlKCkgY29uc3Q7CisgICAgVm9sYXRpbGl0
eVN0YXRlIHN0YXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1ZvbGF0aWxlKCkgY29uc3Q7CiAKLSAg
ICAvLyBzZXRJc1ZvbGF0aWxlIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiBpT1MgYW5kIE9TIDEwLjkg
YW5kIGFib3ZlLgotICAgIFdFQkNPUkVfRVhQT1JUIFN1cmZhY2VTdGF0ZSBzZXRJc1ZvbGF0aWxl
KGJvb2wpOworICAgIFdFQkNPUkVfRVhQT1JUIFZvbGF0aWxpdHlTdGF0ZSBzZXRWb2xhdGlsZShi
b29sKTsKIAogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAg
IHNpemVfdCB0b3RhbEJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbEJ5dGVzOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9JT1N1cmZhY2UubW0K
aW5kZXggMTExMDhmOTNhNjRjYTQzNzU0YTRiYzU5YTNmMjM0MGYxN2Q1YTgzYS4uYTBlNTExYWUz
NWYwMDU4OWNkMjFlYjIxYjRmZDE5ZTI3NzE1ZDA5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSU9TdXJmYWNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0lPU3VyZmFjZS5tbQpAQCAtMzI0LDEyICszMjQs
MTIgQEAgR3JhcGhpY3NDb250ZXh0JiBJT1N1cmZhY2U6OmVuc3VyZUdyYXBoaWNzQ29udGV4dCgp
CiAgICAgcmV0dXJuICptX2dyYXBoaWNzQ29udGV4dDsKIH0KIAotSU9TdXJmYWNlOjpTdXJmYWNl
U3RhdGUgSU9TdXJmYWNlOjpzdGF0ZSgpIGNvbnN0CitWb2xhdGlsaXR5U3RhdGUgSU9TdXJmYWNl
OjpzdGF0ZSgpIGNvbnN0CiB7CiAgICAgdWludDMyX3QgcHJldmlvdXNTdGF0ZSA9IDA7CiAgICAg
SU9SZXR1cm4gcmV0ID0gSU9TdXJmYWNlU2V0UHVyZ2VhYmxlKG1fc3VyZmFjZS5nZXQoKSwga0lP
U3VyZmFjZVB1cmdlYWJsZUtlZXBDdXJyZW50LCAmcHJldmlvdXNTdGF0ZSk7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXQsIHJldCA9PSBrSU9SZXR1cm5TdWNjZXNzKTsKLSAgICByZXR1cm4gcHJldmlv
dXNTdGF0ZSA9PSBrSU9TdXJmYWNlUHVyZ2VhYmxlRW1wdHkgPyBJT1N1cmZhY2U6OlN1cmZhY2VT
dGF0ZTo6RW1wdHkgOiBJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6VmFsaWQ7CisgICAgcmV0dXJu
IHByZXZpb3VzU3RhdGUgPT0ga0lPU3VyZmFjZVB1cmdlYWJsZUVtcHR5ID8gVm9sYXRpbGl0eVN0
YXRlOjpFbXB0eSA6IFZvbGF0aWxpdHlTdGF0ZTo6VmFsaWQ7CiB9CiAKIGJvb2wgSU9TdXJmYWNl
Ojppc1ZvbGF0aWxlKCkgY29uc3QKQEAgLTM0MCwxNiArMzQwLDE2IEBAIGJvb2wgSU9TdXJmYWNl
Ojppc1ZvbGF0aWxlKCkgY29uc3QKICAgICByZXR1cm4gcHJldmlvdXNTdGF0ZSAhPSBrSU9TdXJm
YWNlUHVyZ2VhYmxlTm9uVm9sYXRpbGU7CiB9CiAKLUlPU3VyZmFjZTo6U3VyZmFjZVN0YXRlIElP
U3VyZmFjZTo6c2V0SXNWb2xhdGlsZShib29sIGlzVm9sYXRpbGUpCitWb2xhdGlsaXR5U3RhdGUg
SU9TdXJmYWNlOjpzZXRWb2xhdGlsZShib29sIGlzVm9sYXRpbGUpCiB7CiAgICAgdWludDMyX3Qg
cHJldmlvdXNTdGF0ZSA9IDA7CiAgICAgSU9SZXR1cm4gcmV0ID0gSU9TdXJmYWNlU2V0UHVyZ2Vh
YmxlKG1fc3VyZmFjZS5nZXQoKSwgaXNWb2xhdGlsZSA/IGtJT1N1cmZhY2VQdXJnZWFibGVWb2xh
dGlsZSA6IGtJT1N1cmZhY2VQdXJnZWFibGVOb25Wb2xhdGlsZSwgJnByZXZpb3VzU3RhdGUpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmV0LCByZXQgPT0ga0lPUmV0dXJuU3VjY2Vzcyk7CiAKICAgICBp
ZiAocHJldmlvdXNTdGF0ZSA9PSBrSU9TdXJmYWNlUHVyZ2VhYmxlRW1wdHkpCi0gICAgICAgIHJl
dHVybiBJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6RW1wdHk7CisgICAgICAgIHJldHVybiBWb2xh
dGlsaXR5U3RhdGU6OkVtcHR5OwogCi0gICAgcmV0dXJuIElPU3VyZmFjZTo6U3VyZmFjZVN0YXRl
OjpWYWxpZDsKKyAgICByZXR1cm4gVm9sYXRpbGl0eVN0YXRlOjpWYWxpZDsKIH0KIAogSU9TdXJm
YWNlOjpGb3JtYXQgSU9TdXJmYWNlOjpmb3JtYXQoKSBjb25zdApAQCAtNTA1LDEzICs1MDUsMTMg
QEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIElPU3VyZmFj
ZTo6Rm9ybWF0IGZvcm1hdCkKICAgICByZXR1cm4gdHM7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZSBzdGF0
ZSkKK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBWb2xhdGls
aXR5U3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgIGNhc2UgSU9TdXJm
YWNlOjpTdXJmYWNlU3RhdGU6OlZhbGlkOgorICAgIGNhc2UgVm9sYXRpbGl0eVN0YXRlOjpWYWxp
ZDoKICAgICAgICAgdHMgPDwgInZhbGlkIjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBJT1N1
cmZhY2U6OlN1cmZhY2VTdGF0ZTo6RW1wdHk6CisgICAgY2FzZSBWb2xhdGlsaXR5U3RhdGU6OkVt
cHR5OgogICAgICAgICB0cyA8PCAiZW1wdHkiOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDU3YjBlMzI3NjQyNzE3YjRhNDNlZjNmNmViZjk2
MDE1ODFmMzQ2YmMuLjcxMTdiZWMyNWNmM2I0YWQ3NzBmY2I5YmU1ODA1ZDk3MmEwMjA3YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXJCYWNrZW5kSGFuZGxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CkBA
IC0zNyw2ICszNyw3IEBAIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIC8vIEZJWE1FOiBNYWtlIFBsYXRm
b3JtQ0FMYXllclJlbW90ZS5jcHAgT2JqZWN0aXZlLUMgc28gd2UgY2FuIGluY2x1ZGUgV2ViTGF5
ZXIuaCBoZXJlIGFuZCBzaGFyZSB0aGUgdHlwZWRlZi4KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIE5hdGl2ZUltYWdlOworY2xhc3MgVGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcjsKIHR5
cGVkZWYgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdCwgNT4gUmVwYWludFJlY3RMaXN0OwogfQog
CkBAIC03NiwxNCArNzcsMTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigp
IGNvbnN0CiAgICAgewotI2lmIEhBVkUoSU9TVVJGQUNFKQotICAgICAgICBpZiAobV9hY2NlbGVy
YXRlc0RyYXdpbmcpCi0gICAgICAgICAgICByZXR1cm4gISFtX2Zyb250QnVmZmVyLnN1cmZhY2U7
Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuICEhbV9mcm9udEJ1ZmZlci5iaXRtYXA7CisgICAgICAg
IHJldHVybiAhIW1fZnJvbnRCdWZmZXIuaW1hZ2VCdWZmZXI7CiAgICAgfQogCi0gICAgUmV0YWlu
UHRyPENHQ29udGV4dFJlZj4gdGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiB0YWtl
UGVuZGluZ0ZsdXNoZXIoKTsKIAogICAgIGVudW0gY2xhc3MgQnVmZmVyVHlwZSB7CiAgICAgICAg
IEZyb250LApAQCAtOTcsMTQgKzk0LDExIEBAIHB1YmxpYzoKICAgICBNb25vdG9uaWNUaW1lIGxh
c3REaXNwbGF5VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdERpc3BsYXlUaW1lOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYs
IFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4mJiBiYWNrSW1hZ2UpOworICAgIHZvaWQgZHJh
d0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKICAgICB2b2lkIGNsZWFyQmFj
a2luZ1N0b3JlKCk7CiAgICAgdm9pZCBzd2FwVG9WYWxpZEZyb250QnVmZmVyKCk7CiAKLSNpZiBI
QVZFKElPU1VSRkFDRSkKLSAgICBXZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBzdXJmYWNlQnVm
ZmVyRm9ybWF0KCkgY29uc3Q7Ci0jZW5kaWYKLQorICAgIFdlYkNvcmU6OlBpeGVsRm9ybWF0IHBp
eGVsRm9ybWF0KCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBiYWNraW5nU3RvcmVTaXpl
KCkgY29uc3Q7CiAKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fbGF5ZXI7CkBAIC0xMTYs
MjIgKzExMCwxMiBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlZ2lvbiBtX2RpcnR5UmVnaW9u
OwogCiAgICAgc3RydWN0IEJ1ZmZlciB7Ci0gICAgICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IGJpdG1hcDsKLSNpZiBIQVZFKElPU1VSRkFDRSkKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklPU3VyZmFjZT4gc3VyZmFjZTsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdl
QnVmZmVyPiBpbWFnZUJ1ZmZlcjsKICAgICAgICAgYm9vbCBpc1ZvbGF0aWxlID0gZmFsc2U7Ci0j
ZW5kaWYKIAogICAgICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QKICAgICAgICAg
ewotI2lmIEhBVkUoSU9TVVJGQUNFKQotICAgICAgICAgICAgaWYgKHN1cmZhY2UpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKLSAgICAgICAgICAgIGlmIChiaXRtYXApCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIHJldHVybiAhIWltYWdlQnVmZmVyOwogICAgICAgICB9CiAKICAgICAgICAg
dm9pZCBkaXNjYXJkKCk7CkBAIC0xMzksMTIgKzEyMywxMCBAQCBwcml2YXRlOgogCiAgICAgQnVm
ZmVyIG1fZnJvbnRCdWZmZXI7CiAgICAgQnVmZmVyIG1fYmFja0J1ZmZlcjsKLSNpZiBIQVZFKElP
U1VSRkFDRSkKICAgICBCdWZmZXIgbV9zZWNvbmRhcnlCYWNrQnVmZmVyOwotICAgIFdURjo6TWFj
aFNlbmRSaWdodCBtX2Zyb250QnVmZmVyU2VuZFJpZ2h0OwotI2VuZGlmCisgICAgT3B0aW9uYWw8
SW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlPiBtX2J1ZmZlckhhbmRsZTsKIAotICAgIFJldGFpblB0
cjxDR0NvbnRleHRSZWY+IG1fZnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPiBtX2Zyb250QnVm
ZmVyRmx1c2hlcjsKIAogICAgIGJvb2wgbV9hY2NlbGVyYXRlc0RyYXdpbmcgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9kZWVwQ29sb3IgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCmluZGV4IDAxZDYzNGEyNWUxMDc2NjJjOWIxM2EwYzllZThiMmRjNGUxMGNiN2QuLjkzZGNm
MDYyNzZmNGM3ZjJkMjYwNzJhM2I5MGEyY2Y0ZDQ5YmFlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmUubW0KQEAgLTI5LDEzICsyOSwxNiBAQAogI2ltcG9ydCAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbXBvcnQgIk1hY2hQb3J0LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
aCIKKyNpbXBvcnQgIlBsYXRmb3JtUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIgogI2ltcG9ydCAi
UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXll
clRyZWVDb250ZXh0LmgiCiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBvcnQgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4
dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9J
bWFnZUJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9wb3J0Lmg+
CkBAIC05OSwxOCArMTAyLDE1IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtX2FjY2VsZXJh
dGVzRHJhd2luZzsKICAgICBlbmNvZGVyIDw8IG1faXNPcGFxdWU7CiAKLSAgICBpZiAobV9hY2Nl
bGVyYXRlc0RyYXdpbmcpIHsKLSAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIuc3VyZmFjZSkKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgbV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5jcmVhdGVTZW5kUmln
aHQoKTsKKyAgICBPcHRpb25hbDxJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGU+IGhhbmRsZTsKKyAg
ICBpZiAobV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlcikgeworICAgICAgICAvLyBGSVhNRTogV2Ug
bmVlZCB0byBmbGF0dGVuIHRoZSBjbGFzcyBoaWVyYXJjaHkgc28gd2UgY2FuIGF2b2lkIHRoaXMg
YmlmdXJjYXRpb24uCisgICAgICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykKKyAgICAgICAg
ICAgIGhhbmRsZSA9IHN0YXRpY19jYXN0PEFjY2VsZXJhdGVkUmVtb3RlSW1hZ2VCdWZmZXJQcm94
eSAqPihtX2Zyb250QnVmZmVyLmltYWdlQnVmZmVyLmdldCgpKS0+Y3JlYXRlSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVuY29kZXIgPDwgV1RG
OjpNYWNoU2VuZFJpZ2h0KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGhhbmRsZSA9
IHN0YXRpY19jYXN0PFVuYWNjZWxlcmF0ZWRSZW1vdGVJbWFnZUJ1ZmZlclByb3h5ICo+KG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXIuZ2V0KCkpLT5jcmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5k
bGUoKTsKICAgICB9CiAKLSAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsKLQotICAg
IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICBtX2Zyb250QnVmZmVyLmJpdG1h
cC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSk7CiAgICAgZW5jb2RlciA8PCBoYW5kbGU7CiB9CiAKQEAg
LTEyOCwyMCArMTI4LDggQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgUmVtb3RlTGF5ZXJCYWNraW5nU3QKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5tX2lzT3BhcXVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKHJlc3VsdC5tX2FjY2VsZXJhdGVzRHJhd2luZykgewotICAgICAgICBNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodDsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzZW5kUmlnaHQpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXN1bHQubV9mcm9udEJ1ZmZlclNl
bmRSaWdodCA9IFdURk1vdmUoc2VuZFJpZ2h0KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgQVNTRVJUKCFyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcpOwotCi0gICAgU2hh
cmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFu
ZGxlKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2J1ZmZlckhhbmRsZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXN1bHQubV9mcm9udEJ1ZmZlci5iaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBA
IC0xNjMsNTIgKzE1MSw0OCBAQCBXZWJDb3JlOjpJbnRTaXplIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpiYWNraW5nU3RvcmVTaXplKCkgY29uc3QKICAgICByZXR1cm4gcm91bmRlZEludFNpemUo
c2NhbGVkU2l6ZSk7CiB9CiAKLXVuc2lnbmVkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpieXRl
c1BlclBpeGVsKCkgY29uc3QKK1dlYkNvcmU6OlBpeGVsRm9ybWF0IFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpwaXhlbEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgc3dpdGNoIChzdXJmYWNlQnVmZmVy
Rm9ybWF0KCkpIHsKLSAgICBjYXNlIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpCR1JBOiBy
ZXR1cm4gNDsKLSAgICBjYXNlIFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpZVVY0MjI6IHJl
dHVybiAyOwogI2lmIEhBVkUoSU9TVVJGQUNFX1JHQjEwKQotICAgIGNhc2UgV2ViQ29yZTo6SU9T
dXJmYWNlOjpGb3JtYXQ6OlJHQjEwOiByZXR1cm4gNDsKLSAgICBjYXNlIFdlYkNvcmU6OklPU3Vy
ZmFjZTo6Rm9ybWF0OjpSR0IxMEE4OiByZXR1cm4gNTsKKyAgICBpZiAobV9hY2NlbGVyYXRlc0Ry
YXdpbmcgJiYgbV9kZWVwQ29sb3IpCisgICAgICAgIHJldHVybiBtX2lzT3BhcXVlID8gV2ViQ29y
ZTo6UGl4ZWxGb3JtYXQ6OlJHQjEwIDogV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OlJHQjEwQTg7CiAj
ZW5kaWYKKworICAgIHJldHVybiBXZWJDb3JlOjpQaXhlbEZvcm1hdDo6QkdSQTg7Cit9CisKK3Vu
c2lnbmVkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpieXRlc1BlclBpeGVsKCkgY29uc3QKK3sK
KyAgICBzd2l0Y2ggKHBpeGVsRm9ybWF0KCkpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBpeGVsRm9y
bWF0OjpSR0JBODogcmV0dXJuIDQ7CisgICAgY2FzZSBXZWJDb3JlOjpQaXhlbEZvcm1hdDo6QkdS
QTg6IHJldHVybiA0OworICAgIGNhc2UgV2ViQ29yZTo6UGl4ZWxGb3JtYXQ6OlJHQjEwOiByZXR1
cm4gNDsKKyAgICBjYXNlIFdlYkNvcmU6OlBpeGVsRm9ybWF0OjpSR0IxMEE4OiByZXR1cm4gNTsK
ICAgICB9CiAgICAgcmV0dXJuIDQ7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OnN3YXBUb1ZhbGlkRnJvbnRCdWZmZXIoKQogewotICAgIFdlYkNvcmU6OkludFNpemUgZXhwYW5k
ZWRTY2FsZWRTaXplID0gYmFja2luZ1N0b3JlU2l6ZSgpOwotCi0gICAgaWYgKG1fYWNjZWxlcmF0
ZXNEcmF3aW5nKSB7Ci0gICAgICAgIGlmICghbV9iYWNrQnVmZmVyLnN1cmZhY2UgfHwgbV9iYWNr
QnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2UoKSkgewotICAgICAgICAgICAgc3RkOjpzd2FwKG1fYmFj
a0J1ZmZlciwgbV9zZWNvbmRhcnlCYWNrQnVmZmVyKTsKLSAgICAgICAgICAgIGlmIChtX2JhY2tC
dWZmZXIuc3VyZmFjZSAmJiBtX2JhY2tCdWZmZXIuc3VyZmFjZS0+aXNJblVzZSgpKQotICAgICAg
ICAgICAgICAgIG1fYmFja0J1ZmZlci5kaXNjYXJkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBz
dGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKKyAgICBzdGQ6OnN3YXAobV9m
cm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKIAotICAgICAgICBpZiAoIW1fZnJvbnRCdWZmZXIu
c3VyZmFjZSkKLSAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuc3VyZmFjZSA9IFdlYkNvcmU6OklP
U3VyZmFjZTo6Y3JlYXRlKGV4cGFuZGVkU2NhbGVkU2l6ZSwgV2ViQ29yZTo6c1JHQkNvbG9yU3Bh
Y2VSZWYoKSwgc3VyZmFjZUJ1ZmZlckZvcm1hdCgpKTsKKyAgICBpZiAobV9mcm9udEJ1ZmZlci5p
bWFnZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHNldEJ1ZmZlclZvbGF0aWxp
dHkoQnVmZmVyVHlwZTo6RnJvbnQsIGZhbHNlKTsKKyAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9yKFdlYkNvcmU6OlJlbmRlcmluZ1B1cnBv
c2U6OkRPTSkpIHsKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IG1fbGF5ZXIt
PmNvbnRleHQoKS0+ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1h
Z2VCdWZmZXIoYmFja2luZ1N0b3JlU2l6ZSgpLCBtX2FjY2VsZXJhdGVzRHJhd2luZyA/IFdlYkNv
cmU6OlJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogV2ViQ29yZTo6UmVuZGVyaW5nTW9kZTo6
VW5hY2NlbGVyYXRlZCwgMSwgV2ViQ29yZTo6Q29sb3JTcGFjZTo6U1JHQiwgcGl4ZWxGb3JtYXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNE
cmF3aW5nKTsKLSAgICBzdGQ6OnN3YXAobV9mcm9udEJ1ZmZlciwgbV9iYWNrQnVmZmVyKTsKLQot
ICAgIGlmICghbV9mcm9udEJ1ZmZlci5iaXRtYXApIHsKLSAgICAgICAgU2hhcmVhYmxlQml0bWFw
OjpDb25maWd1cmF0aW9uIGJpdG1hcENvbmZpZ3VyYXRpb247Ci0gICAgICAgIGJpdG1hcENvbmZp
Z3VyYXRpb24uaXNPcGFxdWUgPSBtX2lzT3BhcXVlOwotICAgICAgICBtX2Zyb250QnVmZmVyLmJp
dG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkU2NhbGVkU2l6
ZSwgYml0bWFwQ29uZmlndXJhdGlvbik7Ci0gICAgfQorICAgIGlmIChtX2FjY2VsZXJhdGVzRHJh
d2luZykKKyAgICAgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkNvbmNy
ZXRlSW1hZ2VCdWZmZXI8QWNjZWxlcmF0ZWRJbWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+Ojpj
cmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAxLCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBw
aXhlbEZvcm1hdCgpLCBudWxscHRyKTsKKyAgICBlbHNlCisgICAgICAgIG1fZnJvbnRCdWZmZXIu
aW1hZ2VCdWZmZXIgPSBXZWJDb3JlOjpDb25jcmV0ZUltYWdlQnVmZmVyPFVuYWNjZWxlcmF0ZWRJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJhY2tlbmQ+OjpjcmVhdGUoYmFja2luZ1N0b3JlU2l6ZSgpLCAx
LCBXZWJDb3JlOjpDb2xvclNwYWNlOjpTUkdCLCBwaXhlbEZvcm1hdCgpLCBudWxscHRyKTsKIH0K
IAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgpCiB7Ci0gICAgQVNTRVJU
KCFtX2Zyb250Q29udGV4dFBlbmRpbmdGbHVzaCk7CisgICAgQVNTRVJUKCFtX2Zyb250QnVmZmVy
Rmx1c2hlcik7CiAKICAgICBtX2xhc3REaXNwbGF5VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogCkBAIC0yMzQsNDMgKzIxOCwxMyBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpk
aXNwbGF5KCkKICAgICB9CiAKICAgICBXZWJDb3JlOjpJbnRSZWN0IGV4cGFuZGVkU2NhbGVkTGF5
ZXJCb3VuZHMoV2ViQ29yZTo6SW50UG9pbnQoKSwgZXhwYW5kZWRTY2FsZWRTaXplKTsKLSAgICBi
b29sIHdpbGxQYWludEVudGlyZUJhY2tpbmdTdG9yZSA9IG1fZGlydHlSZWdpb24uY29udGFpbnMo
bGF5ZXJCb3VuZHMpOwogCiAgICAgc3dhcFRvVmFsaWRGcm9udEJ1ZmZlcigpOwogCi0gICAgaWYg
KG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7Ci0gICAgICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJ
bWFnZT4gYmFja0ltYWdlOwotICAgICAgICBpZiAobV9iYWNrQnVmZmVyLnN1cmZhY2UgJiYgIXdp
bGxQYWludEVudGlyZUJhY2tpbmdTdG9yZSkKLSAgICAgICAgICAgIGJhY2tJbWFnZSA9IFdlYkNv
cmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUobV9iYWNrQnVmZmVyLnN1cmZhY2UtPmNyZWF0ZUltYWdl
KCkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChtX2Zyb250QnVmZmVyLnN1cmZhY2UpIHsKLSAgICAg
ICAgICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4dCA9IG1fZnJvbnRCdWZmZXIu
c3VyZmFjZS0+ZW5zdXJlR3JhcGhpY3NDb250ZXh0KCk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQu
c2NhbGUoV2ViQ29yZTo6RmxvYXRTaXplKDEsIC0xKSk7Ci0gICAgICAgICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgwLCAtZXhwYW5kZWRTY2FsZWRTaXplLmhlaWdodCgpKTsKLSAgICAgICAgICAgIGRy
YXdJbkNvbnRleHQoY29udGV4dCwgV1RGTW92ZShiYWNrSW1hZ2UpKTsKLQotICAgICAgICAgICAg
bV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5yZWxlYXNlR3JhcGhpY3NDb250ZXh0KCk7Ci0gICAgICAg
IH0KLSAgICB9IGVsc2UgewotICAgICAgICBBU1NFUlQoIW1fYWNjZWxlcmF0ZXNEcmF3aW5nKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY29udGV4
dCA9IG1fZnJvbnRCdWZmZXIuYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQgPSBtX2Zyb250QnVmZmVyLmltYWdlQnVm
ZmVyLT5jb250ZXh0KCk7CiAKLSAgICAgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBi
YWNrSW1hZ2U7Ci0gICAgICAgIGlmIChtX2JhY2tCdWZmZXIuYml0bWFwICYmICF3aWxsUGFpbnRF
bnRpcmVCYWNraW5nU3RvcmUpCi0gICAgICAgICAgICBiYWNrSW1hZ2UgPSBXZWJDb3JlOjpOYXRp
dmVJbWFnZTo6Y3JlYXRlKG1fYmFja0J1ZmZlci5iaXRtYXAtPm1ha2VDR0ltYWdlKCkuZ2V0KCkp
OworICAgIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihjb250
ZXh0KTsKIAotICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgICAgIGRyYXdJbkNvbnRleHQo
KmNvbnRleHQsIFdURk1vdmUoYmFja0ltYWdlKSk7Ci0gICAgfQotICAgIAotICAgIG1fbGF5ZXIt
Pm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKLSAgICAK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJh
d0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlZlB0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4mJiBiYWNrSW1hZ2UpCi17CiAgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IHNjYWxlZFNpemUgPSBtX3NpemU7CiAgICAgc2NhbGVkU2l6ZS5zY2FsZShtX3NjYWxlKTsKICAg
ICBXZWJDb3JlOjpJbnRSZWN0IHNjYWxlZExheWVyQm91bmRzKFdlYkNvcmU6OkludFBvaW50KCks
IFdlYkNvcmU6OnJvdW5kZWRJbnRTaXplKHNjYWxlZFNpemUpKTsKQEAgLTI5NSw4ICsyNDksMTAg
QEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZHJhd0luQ29udGV4dChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFIKICAgICAgICAgbV9wYWludGluZ1JlY3RzLmFwcGVu
ZChzY2FsZWRSZWN0KTsKICAgICB9CiAKLSAgICBpZiAoYmFja0ltYWdlKQotICAgICAgICBjb250
ZXh0LmRyYXdOYXRpdmVJbWFnZSgqYmFja0ltYWdlLCBzY2FsZWRMYXllckJvdW5kcy5zaXplKCks
IHNjYWxlZExheWVyQm91bmRzLCBzY2FsZWRMYXllckJvdW5kcywgeyBXZWJDb3JlOjpDb21wb3Np
dGVPcGVyYXRvcjo6Q29weSB9KTsKKyAgICBpZiAoIW1fZGlydHlSZWdpb24uY29udGFpbnMobGF5
ZXJCb3VuZHMpKSB7CisgICAgICAgIEFTU0VSVChtX2JhY2tCdWZmZXIuaW1hZ2VCdWZmZXIpOwor
ICAgICAgICBjb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqbV9iYWNrQnVmZmVyLmltYWdlQnVmZmVy
LCB7IDAsIDAgfSk7CisgICAgfQogCiAgICAgaWYgKG1fcGFpbnRpbmdSZWN0cy5zaXplKCkgPT0g
MSkgewogICAgICAgICBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NhbGVkUGFpbnRpbmdSZWN0ID0gbV9w
YWludGluZ1JlY3RzWzBdOwpAQCAtMzU3LDcgKzMxMywxNCBAQCB2b2lkIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgUgogICAgIG1fZGlydHlSZWdpb24gPSBXZWJDb3JlOjpSZWdpb24oKTsKICAgICBtX3BhaW50
aW5nUmVjdHMuY2xlYXIoKTsKIAotICAgIG1fZnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoID0gY29u
dGV4dC5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBtX2Zyb250QnVmZmVyRmx1c2hlciA9IG1fZnJv
bnRCdWZmZXIuaW1hZ2VCdWZmZXItPmNyZWF0ZUZsdXNoZXIoKTsKKworICAgIG1fbGF5ZXItPm93
bmVyKCktPnBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShtX2xheWVyKTsKKworICAgIC8v
IEZJWE1FOiBUaGlzIG1ldGhvZCBoYXMgYSB3ZWlyZCBuYW1lLiBUaGlzIGlzICJzdWJtaXQgd29y
ayIuCisgICAgbV9mcm9udEJ1ZmZlci5pbWFnZUJ1ZmZlci0+Zmx1c2hEcmF3aW5nQ29udGV4dEFu
ZENvbW1pdCgpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3bihXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIHZvaWQgKF5ibG9jaykoV2ViQ29yZTo6RmxvYXRSZWN0KSkKQEAgLTM3Nyw0
NSArMzQwLDQ3IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVudW1lcmF0ZVJlY3Rz
QmVpbmdEcmF3bihXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmCiAKIHZvaWQgUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OmFwcGx5QmFja2luZ1N0b3JlVG9MYXllcihDQUxheWVyICpsYXllciwgTGF5
ZXJDb250ZW50c1R5cGUgY29udGVudHNUeXBlKQogeworICAgIEFTU0VSVChtX2J1ZmZlckhhbmRs
ZSk7CiAgICAgbGF5ZXIuY29udGVudHNPcGFxdWUgPSBtX2lzT3BhcXVlOwogCiAgICAgaWYgKGFj
Y2VsZXJhdGVzRHJhd2luZygpKSB7CiAgICAgICAgIHN3aXRjaCAoY29udGVudHNUeXBlKSB7Ci0g
ICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OklPU3VyZmFjZToKLSAgICAgICAgICAgIGlm
ICghbV9mcm9udEJ1ZmZlci5zdXJmYWNlKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fZnJv
bnRCdWZmZXJTZW5kUmlnaHQpOwotICAgICAgICAgICAgICAgIG1fZnJvbnRCdWZmZXIuc3VyZmFj
ZSA9IFdlYkNvcmU6OklPU3VyZmFjZTo6Y3JlYXRlRnJvbVNlbmRSaWdodChXVEZNb3ZlKG1fZnJv
bnRCdWZmZXJTZW5kUmlnaHQpLCBXZWJDb3JlOjpzUkdCQ29sb3JTcGFjZVJlZigpKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGxheWVyLmNvbnRlbnRzID0gbV9mcm9udEJ1ZmZlci5zdXJm
YWNlID8gbV9mcm9udEJ1ZmZlci5zdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKKyAg
ICAgICAgY2FzZSBMYXllckNvbnRlbnRzVHlwZTo6SU9TdXJmYWNlOiB7CisgICAgICAgICAgICBh
dXRvIHN1cmZhY2UgPSBXZWJDb3JlOjpJT1N1cmZhY2U6OmNyZWF0ZUZyb21TZW5kUmlnaHQoV1RG
TW92ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PigqbV9idWZmZXJIYW5kbGUpKSwgV2ViQ29yZTo6
c1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IHN1cmZh
Y2UgPyBzdXJmYWNlLT5hc0xheWVyQ29udGVudHMoKSA6IG5pbDsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2UgTGF5ZXJDb250ZW50c1R5cGU6OkNBTWFjaFBvcnQ6
Ci0gICAgICAgICAgICBBU1NFUlQobV9mcm9udEJ1ZmZlclNlbmRSaWdodCk7Ci0gICAgICAgICAg
ICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZClhZG9wdENGKENBTWFjaFBvcnRDcmVhdGUo
bV9mcm9udEJ1ZmZlclNlbmRSaWdodC5sZWFrU2VuZFJpZ2h0KCkpKS5nZXQoKTsKKyAgICAgICAg
ICAgIGxheWVyLmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKWFkb3B0Q0YoQ0FNYWNoUG9ydENyZWF0
ZShXVEY6OmdldDxNYWNoU2VuZFJpZ2h0PigqbV9idWZmZXJIYW5kbGUpLmxlYWtTZW5kUmlnaHQo
KSkpLmdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIEFTU0VSVCghYWNjZWxlcmF0ZXNEcmF3aW5nKCkpOwotICAgIGxheWVy
LmNvbnRlbnRzID0gKF9fYnJpZGdlIGlkKW1fZnJvbnRCdWZmZXIuYml0bWFwLT5tYWtlQ0dJbWFn
ZUNvcHkoKS5nZXQoKTsKKyAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
KFdURjo6Z2V0PFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlPigqbV9idWZmZXJIYW5kbGUpKTsKKyAg
ICBsYXllci5jb250ZW50cyA9IChfX2JyaWRnZSBpZCliaXRtYXAtPm1ha2VDR0ltYWdlQ29weSgp
LmdldCgpOwogfQogCi1SZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZTo6dGFrZUZyb250Q29udGV4dFBlbmRpbmdGbHVzaCgpCitzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hlcj4gUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OnRha2VQZW5kaW5nRmx1c2hlcigpCiB7Ci0gICAgcmV0dXJuIFdURk1vdmUobV9mcm9udENv
bnRleHRQZW5kaW5nRmx1c2gpOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fZnJvbnRCdWZm
ZXJGbHVzaGVyLCBudWxscHRyKTsKIH0KIAogYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIHR5cGUsIGJvb2wgaXNWb2xhdGlsZSkKIHsK
KyAgICBpZiAoIWFjY2VsZXJhdGVzRHJhd2luZygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwog
ICAgIC8vIFJldHVybiB2YWx1ZSBpcyB0cnVlIGlmIHdlIHN1Y2NlZWRlZCBpbiBtYWtpbmcgdm9s
YXRpbGUuCiAgICAgYXV0byBtYWtlVm9sYXRpbGUgPSBbXSAoQnVmZmVyJiBidWZmZXIpIC0+IGJv
b2wgewotICAgICAgICBpZiAoIWJ1ZmZlci5zdXJmYWNlIHx8IGJ1ZmZlci5pc1ZvbGF0aWxlKQor
ICAgICAgICBpZiAoIWJ1ZmZlci5pbWFnZUJ1ZmZlciB8fCBidWZmZXIuaXNWb2xhdGlsZSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGJ1ZmZlci5zdXJmYWNlLT5yZWxlYXNl
R3JhcGhpY3NDb250ZXh0KCk7CisgICAgICAgIGJ1ZmZlci5pbWFnZUJ1ZmZlci0+cmVsZWFzZUdy
YXBoaWNzQ29udGV4dCgpOwogCi0gICAgICAgIGlmICghYnVmZmVyLnN1cmZhY2UtPmlzSW5Vc2Uo
KSkgewotICAgICAgICAgICAgYnVmZmVyLnN1cmZhY2UtPnNldElzVm9sYXRpbGUodHJ1ZSk7Cisg
ICAgICAgIGlmICghYnVmZmVyLmltYWdlQnVmZmVyLT5pc0luVXNlKCkpIHsKKyAgICAgICAgICAg
IGJ1ZmZlci5pbWFnZUJ1ZmZlci0+c2V0Vm9sYXRpbGUodHJ1ZSk7CiAgICAgICAgICAgICBidWZm
ZXIuaXNWb2xhdGlsZSA9IHRydWU7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQpAQCAtNDI1LDEzICszOTAsMTMgQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6c2V0
QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIHR5cGUsIGJvb2wgaXNWb2xhdGkKIAogICAgIC8v
IFJldHVybiB2YWx1ZSBpcyB0cnVlIGlmIHdlIG5lZWQgdG8gcmVwYWludC4KICAgICBhdXRvIG1h
a2VOb25Wb2xhdGlsZSA9IFtdIChCdWZmZXImIGJ1ZmZlcikgLT4gYm9vbCB7Ci0gICAgICAgIGlm
ICghYnVmZmVyLnN1cmZhY2UgfHwgIWJ1ZmZlci5pc1ZvbGF0aWxlKQorICAgICAgICBpZiAoIWJ1
ZmZlci5pbWFnZUJ1ZmZlciB8fCAhYnVmZmVyLmlzVm9sYXRpbGUpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgYXV0byBwcmV2aW91c1N0YXRlID0gYnVmZmVyLnN1cmZhY2Ut
PnNldElzVm9sYXRpbGUoZmFsc2UpOworICAgICAgICBhdXRvIHByZXZpb3VzU3RhdGUgPSBidWZm
ZXIuaW1hZ2VCdWZmZXItPnNldFZvbGF0aWxlKGZhbHNlKTsKICAgICAgICAgYnVmZmVyLmlzVm9s
YXRpbGUgPSBmYWxzZTsKIAotICAgICAgICByZXR1cm4gcHJldmlvdXNTdGF0ZSA9PSBXZWJDb3Jl
OjpJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6RW1wdHk7CisgICAgICAgIHJldHVybiBwcmV2aW91
c1N0YXRlID09IFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZTo6RW1wdHk7CiAgICAgfTsKIAogICAg
IHN3aXRjaCAodHlwZSkgewpAQCAtNDYxLDIwICs0MjYsMTAgQEAgYm9vbCBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZTo6c2V0QnVmZmVyVm9sYXRpbGl0eShCdWZmZXJUeXBlIHR5cGUsIGJvb2wgaXNW
b2xhdGkKIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6QnVmZmVyOjpkaXNjYXJkKCkK
IHsKLSAgICBpZiAoc3VyZmFjZSkKLSAgICAgICAgV2ViQ29yZTo6SU9TdXJmYWNlOjptb3ZlVG9Q
b29sKFdURk1vdmUoc3VyZmFjZSkpOwogICAgIGlzVm9sYXRpbGUgPSBmYWxzZTsKLSAgICBiaXRt
YXAgPSBudWxscHRyOwotfQotCi1XZWJDb3JlOjpJT1N1cmZhY2U6OkZvcm1hdCBSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6c3VyZmFjZUJ1ZmZlckZvcm1hdCgpIGNvbnN0Ci17Ci0jaWYgSEFWRShJ
T1NVUkZBQ0VfUkdCMTApCi0gICAgaWYgKG1fZGVlcENvbG9yKQotICAgICAgICByZXR1cm4gbV9p
c09wYXF1ZSA/IFdlYkNvcmU6OklPU3VyZmFjZTo6Rm9ybWF0OjpSR0IxMCA6IFdlYkNvcmU6OklP
U3VyZmFjZTo6Rm9ybWF0OjpSR0IxMEE4OwotI2VuZGlmCi0KLSAgICByZXR1cm4gV2ViQ29yZTo6
SU9TdXJmYWNlOjpGb3JtYXQ6OkJHUkE7CisgICAgaWYgKGltYWdlQnVmZmVyKQorICAgICAgICBp
bWFnZUJ1ZmZlci0+cmVsZWFzZUJ1ZmZlclRvUG9vbCgpOworICAgIGltYWdlQnVmZmVyID0gbnVs
bHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlld1NuYXBzaG90U3RvcmUuaAppbmRleCBhYjE0N2JlNGE5YTdhYTM4OTc4ZjMyYzI5ZmUx
ZGM0YzMxZjE0YjRjLi5kMjgwZGFlZTk4ZDc5MTUzY2I2ZjljMWZkMGE4Njc3YzkxYjdjZWQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3U25hcHNob3RTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdTbmFwc2hvdFN0b3JlLmgKQEAgLTgzLDcg
KzgzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTdXJmYWNlKHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJT1N1cmZhY2U+KTsKIAotICAgIFdlYkNvcmU6OklPU3VyZmFjZTo6U3VyZmFjZVN0
YXRlIHNldFZvbGF0aWxlKGJvb2wpOworICAgIFdlYkNvcmU6OlZvbGF0aWxpdHlTdGF0ZSBzZXRW
b2xhdGlsZShib29sKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdTbmFwc2hvdFN0b3JlTWFjLm1tCmluZGV4IGM0
M2JkMzdkZjljNjA1OWIyNjY2MTg5Njg5ZTI5YTY4YjBiMWMwNGIuLjIyM2E0NDRmODBiNWIxOWQ1
Mzk3ZGQ5M2ZmNzNjMjAzYTZhMDk5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9WaWV3U25hcHNob3RTdG9yZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVmlld1NuYXBzaG90U3RvcmVNYWMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lt
cG9ydCA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9JT1N1
cmZhY2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvSW1hZ2VCdWZmZXIuaD4KIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1F1YXJ0ekNvcmVTUEkuaD4KQEAg
LTc0LDE1ICs3NSwxNSBAQCB2b2lkIFZpZXdTbmFwc2hvdDo6Y2xlYXJJbWFnZSgpCiAgICAgbV9z
dXJmYWNlID0gbnVsbHB0cjsKIH0KIAotV2ViQ29yZTo6SU9TdXJmYWNlOjpTdXJmYWNlU3RhdGUg
Vmlld1NuYXBzaG90OjpzZXRWb2xhdGlsZShib29sIGJlY29tZVZvbGF0aWxlKQorV2ViQ29yZTo6
Vm9sYXRpbGl0eVN0YXRlIFZpZXdTbmFwc2hvdDo6c2V0Vm9sYXRpbGUoYm9vbCBiZWNvbWVWb2xh
dGlsZSkKIHsKICAgICBpZiAoVmlld1NuYXBzaG90U3RvcmU6OnNpbmdsZXRvbigpLmRpc2FibGVT
bmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nKCkpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJ
T1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6VmFsaWQ7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpW
b2xhdGlsaXR5U3RhdGU6OlZhbGlkOwogCiAgICAgaWYgKCFtX3N1cmZhY2UpCi0gICAgICAgIHJl
dHVybiBXZWJDb3JlOjpJT1N1cmZhY2U6OlN1cmZhY2VTdGF0ZTo6RW1wdHk7CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpWb2xhdGlsaXR5U3RhdGU6OkVtcHR5OwogCi0gICAgcmV0dXJuIG1fc3Vy
ZmFjZS0+c2V0SXNWb2xhdGlsZShiZWNvbWVWb2xhdGlsZSk7CisgICAgcmV0dXJuIG1fc3VyZmFj
ZS0+c2V0Vm9sYXRpbGUoYmVjb21lVm9sYXRpbGUpOwogfQogCiBpZCBWaWV3U25hcHNob3Q6OmFz
TGF5ZXJDb250ZW50cygpCkBAIC05MCw3ICs5MSw3IEBAIGlkIFZpZXdTbmFwc2hvdDo6YXNMYXll
ckNvbnRlbnRzKCkKICAgICBpZiAoIW1fc3VyZmFjZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBpZiAoc2V0Vm9sYXRpbGUoZmFsc2UpICE9IFdlYkNvcmU6OklPU3VyZmFjZTo6U3Vy
ZmFjZVN0YXRlOjpWYWxpZCkgeworICAgIGlmIChzZXRWb2xhdGlsZShmYWxzZSkgIT0gV2ViQ29y
ZTo6Vm9sYXRpbGl0eVN0YXRlOjpWYWxpZCkgewogICAgICAgICBjbGVhckltYWdlKCk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZEhhbmRsZS5o
CmluZGV4IGE1OTYzMDY5ZjY2MTgxODNkMDc4YTY0YzJkZWFjYzJkODNhNGNkZTMuLjQwMmMyOGE0
MGU4MjYzOWU1NDMyMjBlZjkxMDc4ZDliMWM5NGQzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kSGFuZGxlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tl
bmRIYW5kbGUuaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5n
IEltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSA9IFZhcmlhbnQ8Ci0jaWYgUExBVEZPUk0oQ09DT0Ep
CisjaWYgUExBVEZPUk0oQ09DT0EpIC8vIEZJWE1FOiBUaGlzIGlzIHJlYWxseSBhYm91dCBJT1N1
cmZhY2UuCiAgICAgTWFjaFNlbmRSaWdodCwKICNlbmRpZgogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDA0ZWQxMmUyYmUyMTIwYjgw
Yjg3NTI2Mzk0MDM4NWI3NmFjZDc5MzguLjAxMjFlZmQxZTdiNTYzOTIwNjgyZjE4MDNjNTJiY2I2
ZDNhNzVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC00MCw2ICs0MCwyMyBA
QCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDsKIAor
Y2xhc3MgVGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hlciA6IHB1YmxpYyBXZWJDb3Jl
OjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBUaHJlYWRTYWZlUmVtb3RlSW1hZ2VCdWZmZXJGbHVzaGVyKFdl
YkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGRuJ3Qgc3luY2hyb25vdXNseSB3YWl0IG9uIHRoZSBmbHVzaCB1bnRpbCBmbHVz
aCgpIGlzIGNhbGxlZCwgYnV0IGhhdmUgdG8gaW52ZW50CisgICAgICAgIC8vIGEgdGhyZWFkLXNh
ZmUgd2F5IHRvIHdhaXQgb24gdGhlIGluY29taW5nIG1lc3NhZ2UuCisgICAgICAgIGltYWdlQnVm
ZmVyLmZsdXNoRHJhd2luZ0NvbnRleHQoKTsKKyAgICB9CisKKyAgICB2b2lkIGZsdXNoKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorfTsKKwogdGVtcGxhdGU8dHlwZW5hbWUg
QmFja2VuZFR5cGU+CiBjbGFzcyBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5IDogcHVibGljIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5kVHlwZT4sIHB1YmxpYyBXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OkRlbGVnYXRlLCBwdWJsaWMgV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Okl0ZW1CdWZmZXJXcml0aW5nQ2xpZW50IHsKICAgICB1c2luZyBCYXNlRGlzcGxheUxp
c3RJbWFnZUJ1ZmZlciA9IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJbWFnZUJ1ZmZlcjxCYWNrZW5k
VHlwZT47CkBAIC03Niw2ICs5MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVjZWl2ZWRGbHVz
aElkZW50aWZpZXIgPSBmbHVzaElkZW50aWZpZXI7CiAgICAgfQogCisgICAgSW1hZ2VCdWZmZXJC
YWNrZW5kSGFuZGxlIGNyZWF0ZUltYWdlQnVmZmVyQmFja2VuZEhhbmRsZSgpCisgICAgeworICAg
ICAgICBlbnN1cmVCYWNrZW5kQ3JlYXRlZCgpOworICAgICAgICByZXR1cm4gbV9iYWNrZW5kLT5j
cmVhdGVJbWFnZUJ1ZmZlckJhY2tlbmRIYW5kbGUoKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAg
ICBSZW1vdGVJbWFnZUJ1ZmZlclByb3h5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSwg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5JiByZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkp
CiAgICAgICAgIDogQmFzZURpc3BsYXlMaXN0SW1hZ2VCdWZmZXIoc2l6ZSwgdGhpcykKQEAgLTMw
NSw2ICszMjgsMTEgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgZmx1c2hEcmF3aW5nQ29udGV4
dCgpOwogICAgIH0KIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1h
Z2VCdWZmZXJGbHVzaGVyPiBjcmVhdGVGbHVzaGVyKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IHJldHVybiBXVEY6Om1ha2VVbmlxdWU8VGhyZWFkU2FmZVJlbW90ZUltYWdlQnVmZmVyRmx1c2hl
cj4oKnRoaXMpOworICAgIH0KKwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpGbHVzaElkZW50
aWZpZXIgbV9zZW50Rmx1c2hJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpG
bHVzaElkZW50aWZpZXIgbV9yZWNlaXZlZEZsdXNoSWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eT4gbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDY1OWY2ZmVhMzIxY2FkMjdhYzk4NTRhNmYyMmI3
ZDdlOTc2YzUzNTEuLjMzNDc2NGFjZTJhOGM0Mzg1ODhiMzE5ODA2MmYzNjVhMzY2ZThiZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC05MDMsMTkgKzkwMywxMyBAQCBSZWZQdHI8RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZURpc3BsYXlSZWZyZXNoTW9u
aXRvcihQbGF0ZgogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogCi1SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkmIFdlYkNocm9tZUNsaWVudDo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFByb3h5KCkgY29uc3QKLXsKLSAgICBpZiAoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KQotICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSA9IFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRQcm94eTo6Y3JlYXRlKCk7Ci0gICAgcmV0dXJuICptX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eTsKLX0KIAogUmVmUHRyPEltYWdlQnVmZmVyPiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlLCBSZW5kZXJpbmdQdXJwb3NlIHB1cnBvc2UsIGZsb2F0IHJlc29sdXRpb25TY2Fs
ZSwgQ29sb3JTcGFjZSBjb2xvclNwYWNlLCBQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCkgY29uc3QK
IHsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNob3VsZFVzZVJlbW90ZVJlbmRl
cmluZ0ZvcihwdXJwb3NlKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4g
ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6
ZSwgcmVuZGVyaW5nTW9kZSwgcmVzb2x1dGlvblNjYWxlLCBjb2xvclNwYWNlLCBwaXhlbEZvcm1h
dCk7CisgICAgcmV0dXJuIG1fcGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
KS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCByZW5kZXJpbmdNb2RlLCByZXNvbHV0aW9uU2NhbGUs
IGNvbG9yU3BhY2UsIHBpeGVsRm9ybWF0KTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJP
Q0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCA5NzM4ZDFiMzk1MjY3MGYwMDg0OGQxMTdhNmUz
YjhmYzQyMTJkZjAxLi5lYzE0ZmRiMTZjODFjYzEyNzA2Y2ZjYjU5ZTk5ZjJjZDMzNzYwZGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIGVudW0gY2xhc3MgU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQgOiBib29sOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJQYWdl
OwogCkBAIC0yNDMsNyArMjQyLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViQ29yZTo6RGlz
cGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6
UGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IGZpbmFsOwogCiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQotICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgZW5zdXJlUmVtb3RlUmVuZGVyaW5n
QmFja2VuZFByb3h5KCkgY29uc3Q7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlQnVmZmVyPiBj
cmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBXZWJDb3JlOjpSZW5k
ZXJpbmdNb2RlLCBXZWJDb3JlOjpSZW5kZXJpbmdQdXJwb3NlLCBmbG9hdCByZXNvbHV0aW9uU2Nh
bGUsIFdlYkNvcmU6OkNvbG9yU3BhY2UsIFdlYkNvcmU6OlBpeGVsRm9ybWF0KSBjb25zdCBmaW5h
bDsKICNlbmRpZgogCkBAIC00MDUsOSArNDAzLDYgQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUg
Ym9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9Owog
ICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsg
ZmFsc2UgfTsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgbXV0YWJsZSBzdGQ6OnVuaXF1
ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eTsKLSNlbmRpZgogICAgIFdlYlBhZ2UmIG1fcGFnZTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oCmluZGV4IDRmN2I5ODNjZDgwZWE1
NTc1ZDhiMzkwMzMyNTZkYzAxYTE3YzlhZTAuLjcwMmM2NzlmZmJjMTY4N2M0MzAxNzg0MjI4YjRl
MzdhNmY1NmNjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQuaApAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgR3Jh
cGhpY3NMYXllckNBUmVtb3RlOwogY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlOworY2xhc3Mg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OwogY2xhc3MgV2ViUGFnZTsKIAogLy8gRklYTUU6
IFRoaXMgY2xhc3MgZG9lc24ndCBkbyBtdWNoIG5vdy4gUm9sbCBpbnRvIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhPwpAQCAtNzcsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBuZXh0UmVu
ZGVyaW5nVXBkYXRlUmVxdWlyZXNTeW5jaHJvbm91c0ltYWdlRGVjb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX25leHRSZW5kZXJpbmdVcGRhdGVSZXF1aXJlc1N5bmNocm9ub3VzSW1hZ2VEZWNvZGlu
ZzsgfQogCiAgICAgdm9pZCBhZG9wdExheWVyc0Zyb21Db250ZXh0KFJlbW90ZUxheWVyVHJlZUNv
bnRleHQmKTsKKworICAgIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgZW5zdXJlUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5KCk7CiAgICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBib29sIGNhblNob3dXaGlsZUxvY2tlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZUNvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQppbmRleCA1MjIwNTVlMmQ5NTY3YzZkZTMx
Njg3MzVhYjM4N2IwNmZhZDU3MGQ2Li4wMGQ1NTc1NzVjMGY3NzM5ZDk1N2JhMmQ5ZWU5MDliZTIw
NjNhYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dC5tbQpAQCAtMTg4LDQgKzE4OCw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6YW5p
bWF0aW9uRGlkRW5kKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5CiAgICAgICAg
IGl0LT52YWx1ZS0+YW5pbWF0aW9uRW5kZWQoa2V5KTsKIH0KIAorUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5JiBSZW1vdGVMYXllclRyZWVDb250ZXh0OjplbnN1cmVSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHkoKQoreworICAgIHJldHVybiBtX3dlYlBhZ2UuZW5zdXJlUmVtb3RlUmVuZGVy
aW5nQmFja2VuZFByb3h5KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCAxZTI1
NjYyYjAyN2E3MTdiYWU2YjdkZTA1ODNkZTI2NjI5YWZkNjQ5Li4wYWY0MDE5NDg0MGFmZTY4ODhh
ODYxMzgyZmRkNmM5ZTRlMjZkMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaApAQCAtMzksNiArMzksNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBQbGF0Zm9ybUNBTGF5ZXI7CitjbGFzcyBUaHJlYWRTYWZlSW1hZ2VC
dWZmZXJGbHVzaGVyOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyNSwxNyArMTI2LDE3
IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBCYWNraW5nU3RvcmVGbHVzaGVyIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPEJhY2tpbmdTdG9yZUZsdXNoZXI+IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBSZWY8QmFja2luZ1N0b3JlRmx1c2hlcj4gY3JlYXRlKElQQzo6Q29ubmVj
dGlvbiosIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBWZWN0b3I8UmV0YWluUHRyPENH
Q29udGV4dFJlZj4+KTsKKyAgICAgICAgc3RhdGljIFJlZjxCYWNraW5nU3RvcmVGbHVzaGVyPiBj
cmVhdGUoSVBDOjpDb25uZWN0aW9uKiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdlQnVmZmVyRmx1c2hl
cj4+KTsKIAogICAgICAgICB2b2lkIGZsdXNoKCk7CiAgICAgICAgIGJvb2wgaGFzRmx1c2hlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzRmx1c2hlZDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
QmFja2luZ1N0b3JlRmx1c2hlcihJUEM6OkNvbm5lY3Rpb24qLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiwgVmVjdG9yPFJldGFpblB0cjxDR0NvbnRleHRSZWY+Pik7CisgICAgICAgIEJh
Y2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0aW9uKiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4sIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGhyZWFkU2FmZUltYWdl
QnVmZmVyRmx1c2hlcj4+KTsKIAogICAgICAgICBSZWZQdHI8SVBDOjpDb25uZWN0aW9uPiBtX2Nv
bm5lY3Rpb247CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+IG1fY29tbWl0
RW5jb2RlcjsKLSAgICAgICAgVmVjdG9yPFJldGFpblB0cjxDR0NvbnRleHRSZWY+PiBtX2NvbnRl
eHRzVG9GbHVzaDsKKyAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJl
YWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gbV9mbHVzaGVyczsKIAogICAgICAgICBzdGQ6OmF0
b21pYzxib29sPiBtX2hhc0ZsdXNoZWQ7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCA5NjQyYzQ1ZDFmOGIyZTk4
ZDU0YTllNTQyZjVhMWVmMjZmMWY4YzYwLi5hMDIzMjI4NzE2YTFlZTQxNTljMTI0OWY1ZmI1MDE0
NjcyZjIzNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCkBAIC0zODQsMTMgKzM4NCwxMyBAQCB2b2lkIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjp1cGRhdGVSZW5kZXJpbmcoKQogCiAgICAgLy8gRklYTUU6IE1vdmUgYWxs
IGJhY2tpbmcgc3RvcmUgZmx1c2hpbmcgbWFuYWdlbWVudCB0byBSZW1vdGVMYXllckJhY2tpbmdT
dG9yZUNvbGxlY3Rpb24uCiAgICAgYm9vbCBoYWRBbnlDaGFuZ2VkQmFja2luZ1N0b3JlID0gZmFs
c2U7Ci0gICAgVmVjdG9yPFJldGFpblB0cjxDR0NvbnRleHRSZWY+PiBjb250ZXh0c1RvRmx1c2g7
CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZm
ZXJGbHVzaGVyPj4gZmx1c2hlcnM7CiAgICAgZm9yIChhdXRvJiBsYXllciA6IGxheWVyVHJhbnNh
Y3Rpb24uY2hhbmdlZExheWVycygpKSB7CiAgICAgICAgIGlmIChsYXllci0+cHJvcGVydGllcygp
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdT
dG9yZUNoYW5nZWQpIHsKICAgICAgICAgICAgIGhhZEFueUNoYW5nZWRCYWNraW5nU3RvcmUgPSB0
cnVlOwogICAgICAgICAgICAgaWYgKGxheWVyLT5wcm9wZXJ0aWVzKCkuYmFja2luZ1N0b3JlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gY29udGV4dFBlbmRpbmdGbHVzaCA9IGxheWVyLT5w
cm9wZXJ0aWVzKCkuYmFja2luZ1N0b3JlLT50YWtlRnJvbnRDb250ZXh0UGVuZGluZ0ZsdXNoKCkp
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHRzVG9GbHVzaC5hcHBlbmQoY29udGV4dFBlbmRp
bmdGbHVzaCk7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gcGVuZGluZ0ZsdXNoZXIgPSBsYXll
ci0+cHJvcGVydGllcygpLmJhY2tpbmdTdG9yZS0+dGFrZVBlbmRpbmdGbHVzaGVyKCkpCisgICAg
ICAgICAgICAgICAgICAgIGZsdXNoZXJzLmFwcGVuZChXVEZNb3ZlKHBlbmRpbmdGbHVzaGVyKSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDAyLDcgKzQwMiw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgaWYgKGhhZEFu
eUNoYW5nZWRCYWNraW5nU3RvcmUpCiAgICAgICAgIGJhY2tpbmdTdG9yZUNvbGxlY3Rpb24uc2No
ZWR1bGVWb2xhdGlsaXR5VGltZXIoKTsKIAotICAgIFJlZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVy
PiBiYWNraW5nU3RvcmVGbHVzaGVyID0gQmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCksIFdURk1vdmUoY29t
bWl0RW5jb2RlciksIFdURk1vdmUoY29udGV4dHNUb0ZsdXNoKSk7CisgICAgUmVmUHRyPEJhY2tp
bmdTdG9yZUZsdXNoZXI+IGJhY2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5nU3RvcmVGbHVzaGVy
OjpjcmVhdGUoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KSwgV1RGTW92ZShjb21taXRFbmNvZGVyKSwgV1RGTW92ZShmbHVzaGVycykpOwogICAgIG1fcGVu
ZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCiAgICAgYXV0
byBwYWdlSUQgPSBtX3dlYlBhZ2UuaWRlbnRpZmllcigpOwpAQCAtNDUxLDE1ICs0NTEsMTUgQEAg
Ym9vbCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6bWFya0xheWVyc1ZvbGF0aWxlSW1tZWRp
YXRlbHlJZlBvc3NpYmxlKCkKICAgICByZXR1cm4gbV9yZW1vdGVMYXllclRyZWVDb250ZXh0LT5i
YWNraW5nU3RvcmVDb2xsZWN0aW9uKCkubWFya0FsbEJhY2tpbmdTdG9yZVZvbGF0aWxlSW1tZWRp
YXRlbHlJZlBvc3NpYmxlKCk7CiB9CiAKLVJlZjxSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6
QmFja2luZ1N0b3JlRmx1c2hlcj4gUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdT
dG9yZUZsdXNoZXI6OmNyZWF0ZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+IGVuY29kZXIsIFZlY3RvcjxSZXRhaW5QdHI8Q0dDb250ZXh0
UmVmPj4gY29udGV4dHNUb0ZsdXNoKQorUmVmPFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpC
YWNraW5nU3RvcmVGbHVzaGVyPiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6QmFja2luZ1N0
b3JlRmx1c2hlcjo6Y3JlYXRlKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpUaHJlYWRTYWZlSW1hZ2VCdWZmZXJGbHVzaGVyPj4gZmx1c2hlcnMpCiB7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJhY2tpbmdTdG9y
ZUZsdXNoZXIoY29ubmVjdGlvbiwgV1RGTW92ZShlbmNvZGVyKSwgV1RGTW92ZShjb250ZXh0c1Rv
Rmx1c2gpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWE6OkJhY2tpbmdTdG9yZUZsdXNoZXIoY29ubmVjdGlvbiwgV1RGTW92ZShlbmNvZGVyKSwg
V1RGTW92ZShmbHVzaGVycykpKTsKIH0KIAotUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OkJh
Y2tpbmdTdG9yZUZsdXNoZXI6OkJhY2tpbmdTdG9yZUZsdXNoZXIoSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiBlbmNvZGVyLCBWZWN0b3I8
UmV0YWluUHRyPENHQ29udGV4dFJlZj4+IGNvbnRleHRzVG9GbHVzaCkKK1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVGbHVzaGVyOjpCYWNraW5nU3RvcmVGbHVzaGVyKElQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4g
ZW5jb2RlciwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUaHJlYWRTYWZlSW1hZ2VC
dWZmZXJGbHVzaGVyPj4gZmx1c2hlcnMpCiAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikK
ICAgICAsIG1fY29tbWl0RW5jb2RlcihXVEZNb3ZlKGVuY29kZXIpKQotICAgICwgbV9jb250ZXh0
c1RvRmx1c2goV1RGTW92ZShjb250ZXh0c1RvRmx1c2gpKQorICAgICwgbV9mbHVzaGVycyhXVEZN
b3ZlKGZsdXNoZXJzKSkKICAgICAsIG1faGFzRmx1c2hlZChmYWxzZSkKIHsKIH0KQEAgLTQ3MCw4
ICs0NzAsOCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpCYWNraW5nU3RvcmVG
bHVzaGVyOjpmbHVzaCgpCiAKICAgICBUcmFjZVNjb3BlIHRyYWNpbmdTY29wZShCYWNraW5nU3Rv
cmVGbHVzaFN0YXJ0LCBCYWNraW5nU3RvcmVGbHVzaEVuZCk7CiAgICAgCi0gICAgZm9yIChhdXRv
JiBjb250ZXh0IDogbV9jb250ZXh0c1RvRmx1c2gpCi0gICAgICAgIENHQ29udGV4dEZsdXNoKGNv
bnRleHQuZ2V0KCkpOworICAgIGZvciAoYXV0byYgZmx1c2hlciA6IG1fZmx1c2hlcnMpCisgICAg
ICAgIGZsdXNoZXItPmZsdXNoKCk7CiAgICAgbV9oYXNGbHVzaGVkID0gdHJ1ZTsKIAogICAgIG1f
Y29ubmVjdGlvbi0+c2VuZE1lc3NhZ2UoV1RGTW92ZShtX2NvbW1pdEVuY29kZXIpLCB7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAxOWEy
MGI3NmE2YmUxNzY1NGI1NzgxZDEzYjY4YTA5NWJjY2NiZTAwLi4xZmE2ZjI4ZTAxNDE0ZDBjMzY4
YjIyM2Y2OGIyZDM2NmI4ZDk0NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIlBsdWdpblByb3h5
LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgorI2lu
Y2x1ZGUgIlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS5oIgogI2luY2x1ZGUgIlJlbW90ZVdl
Ykluc3BlY3RvclVJLmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgpAQCAtNzI4OCw2ICs3Mjg5LDE1IEBAIHZvaWQg
V2ViUGFnZTo6bm90aWZ5UGFnZU9mQXBwQm91bmRCZWhhdmlvcigpCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShHUFVfUFJPQ0VTUykKK1JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSYgV2ViUGFn
ZTo6ZW5zdXJlUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkKK3sKKyAgICBpZiAoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KQorICAgICAgICBtX3JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eSA9IFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6Y3JlYXRlKCk7CisgICAgcmV0
dXJuICptX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKK30KKyNlbmRpZgorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAyNjNmZjdlNTRkZjZhODM0
MDk5YzlhMzAwZmJkN2Y1NTQ4ZDhkYjI0Li4zMTMxMGNlNDY1OGZmMjI4ZDBlNTU2OGI1M2JkNWZm
M2MzYjllNzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CkBAIC0yNDYsNiArMjQ2LDcgQEAgY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyOwogY2xhc3MgUERGUGx1Z2luOwogY2xhc3MgUGFnZUJhbm5lcjsKIGNsYXNzIFBsdWdp
blZpZXc7CitjbGFzcyBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk7CiBjbGFzcyBSZW1vdGVX
ZWJJbnNwZWN0b3JVSTsKIGNsYXNzIFRleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTsKIGNsYXNz
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjsKQEAgLTEzNzQsNiArMTM3NSwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHN5bmNocm9uaXplQ09SU0Rpc2FibGluZ1BhdHRlcm5zV2l0
aE5ldHdvcmtQcm9jZXNzKCk7CiAKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCisgICAgUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5JiBlbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHko
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTIxODYsNiArMjE5MSwxMCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pcGNUZXN0aW5nQVBJRW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgdWludDY0X3QgbV92aXNpdGVkTGlua1RhYmxlSUQ7CiAjZW5kaWYKKworI2lmIEVOQUJMRShH
UFVfUFJPQ0VTUykKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5PiBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTsKKyNlbmRpZgogfTsKIAogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>