<?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>222230</bug_id>
          
          <creation_ts>2021-02-20 11:37:37 -0800</creation_ts>
          <short_desc>[GPU Process] Implement the ClipToDrawingCommands item by using begin and end markers</short_desc>
          <delta_ts>2022-02-10 10:56:48 -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>Canvas</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=225959</see_also>
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>dino</cc>
    
    <cc>rini_patel</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1731818</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-20 11:37:37 -0800</bug_when>
    <thetext>Instead of encoding and decoding the clipping commands as a separate DisplayList, the recorder will insert a &quot;begin&quot; and &quot;end&quot; markers before and after the clipping commands. When replaying the &quot;begin&quot; mark, the relpayer will create a mask ImageBuffer and force using its context for the following items . When replaying the &quot;end&quot; mark, it will clip the original context to the mask ImageBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731820</commentid>
    <comment_count>1</comment_count>
      <attachid>421096</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-20 11:55:45 -0800</bug_when>
    <thetext>Created attachment 421096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1731907</commentid>
    <comment_count>2</comment_count>
      <attachid>421096</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-20 20:17:18 -0800</bug_when>
    <thetext>Comment on attachment 421096
Patch

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

This does not seem outrageous

&gt; Source/WebCore/ChangeLog:12
&gt; +        When replaying the &quot;begin&quot; mark, the relpayer will create a mask ImageBuffer

sp. `relpayer`

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:160
&gt; +        if (!m_maskImageBuffer)
&gt; +            return { StopReplayReason::InvalidItem, WTF::nullopt };

Is the item really invalid? Doesn&apos;t this probably mean we ran out of memory? I guess it doesn&apos;t matter. But, what is the upstream behavior of this?

Also, what happens to the rest of the DL when this happens? Will you replay the items that were supposed to go to the mask onto the main context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732217</commentid>
    <comment_count>3</comment_count>
      <attachid>421096</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-22 11:16:18 -0800</bug_when>
    <thetext>Comment on attachment 421096
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:164
&gt; +    if (item.is&lt;EndClipToDrawingCommands&gt;()) {

What happens if we never see the &quot;end&quot; command? What if begin/end are deeply nested? Can an attacker exploit either of these trigger buffer overflow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732226</commentid>
    <comment_count>4</comment_count>
      <attachid>421216</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-22 11:52:37 -0800</bug_when>
    <thetext>Created attachment 421216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732228</commentid>
    <comment_count>5</comment_count>
      <attachid>421218</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-22 11:53:51 -0800</bug_when>
    <thetext>Created attachment 421218
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732236</commentid>
    <comment_count>6</comment_count>
      <attachid>421096</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-22 12:01:20 -0800</bug_when>
    <thetext>Comment on attachment 421096
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        When replaying the &quot;begin&quot; mark, the relpayer will create a mask ImageBuffer
&gt; 
&gt; sp. `relpayer`

Fixed.

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:160
&gt;&gt; +            return { StopReplayReason::InvalidItem, WTF::nullopt };
&gt; 
&gt; Is the item really invalid? Doesn&apos;t this probably mean we ran out of memory? I guess it doesn&apos;t matter. But, what is the upstream behavior of this?
&gt; 
&gt; Also, what happens to the rest of the DL when this happens? Will you replay the items that were supposed to go to the mask onto the main context?

I added StopReplayReason::OutOfMemory to handle this case.

I added also the following check in RemoteRenderingBackend::nextDestinationImageBufferAfterApplyingDisplayLists()

MESSAGE_CHECK_WITH_RETURN_VALUE(result.reasonForStopping != DisplayList::StopReplayReason::OutOfMemory, nullptr, &quot;Cound not allocate memory&quot;);

This will terminate the WebProcess:

#define MESSAGE_CHECK_WITH_RETURN_VALUE(assertion, returnValue, message) do { \
    if (UNLIKELY(!(assertion))) { \
        TERMINATE_WEB_PROCESS_WITH_MESSAGE(message); \
        return (returnValue); \
    } \
} while (0)

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:164
&gt;&gt; +    if (item.is&lt;EndClipToDrawingCommands&gt;()) {
&gt; 
&gt; What happens if we never see the &quot;end&quot; command? What if begin/end are deeply nested? Can an attacker exploit either of these trigger buffer overflow?

clipToDrawingCommands() can be called internally. Currently it is only called form one place which is CanvasRenderingContext2DBase::drawTextUnchecked(). It does not make sense to have nested calls from clipToDrawingCommands() because the drawing commands create a mask image. Creating the mask should not involve drawing with gradient. And the drawing happens only in the lambda function which we control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732340</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-22 15:36:57 -0800</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #6)

&gt; &gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:164
&gt; &gt;&gt; +    if (item.is&lt;EndClipToDrawingCommands&gt;()) {
&gt; &gt; 
&gt; &gt; What happens if we never see the &quot;end&quot; command? What if begin/end are deeply nested? Can an attacker exploit either of these trigger buffer overflow?
&gt; 
&gt; clipToDrawingCommands() can be called internally. Currently it is only
&gt; called form one place which is
&gt; CanvasRenderingContext2DBase::drawTextUnchecked(). It does not make sense to
&gt; have nested calls from clipToDrawingCommands() because the drawing commands
&gt; create a mask image. Creating the mask should not involve drawing with
&gt; gradient. And the drawing happens only in the lambda function which we
&gt; control.

Let me ask it this way. What happens when an IPC fuzzer generates display list IPC with lots of &quot;begin clip to drawing command&quot; but no &quot;end&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732370</commentid>
    <comment_count>8</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-22 16:31:03 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #7)
&gt; (In reply to Said Abou-Hallawa from comment #6)
&gt; 
&gt; &gt; &gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp:164
&gt; &gt; &gt;&gt; +    if (item.is&lt;EndClipToDrawingCommands&gt;()) {
&gt; &gt; &gt; 
&gt; &gt; &gt; What happens if we never see the &quot;end&quot; command? What if begin/end are deeply nested? Can an attacker exploit either of these trigger buffer overflow?
&gt; &gt; 
&gt; &gt; clipToDrawingCommands() can be called internally. Currently it is only
&gt; &gt; called form one place which is
&gt; &gt; CanvasRenderingContext2DBase::drawTextUnchecked(). It does not make sense to
&gt; &gt; have nested calls from clipToDrawingCommands() because the drawing commands
&gt; &gt; create a mask image. Creating the mask should not involve drawing with
&gt; &gt; gradient. And the drawing happens only in the lambda function which we
&gt; &gt; control.
&gt; 
&gt; Let me ask it this way. What happens when an IPC fuzzer generates display
&gt; list IPC with lots of &quot;begin clip to drawing command&quot; but no &quot;end&quot;?

Replayer::applyItem() will terminate the web process once it detects a &quot;begin clip to drawing command&quot; item while m_maskImageBuffer is not null.

    if (item.is&lt;BeginClipToDrawingCommands&gt;()) {
        if (m_maskImageBuffer)
            return { StopReplayReason::InvalidItem, WTF::nullopt };
        ...
        return { WTF::nullopt, WTF::nullopt };
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732376</commentid>
    <comment_count>9</comment_count>
      <attachid>421218</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-22 16:41:39 -0800</bug_when>
    <thetext>Comment on attachment 421218
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h:55
&gt; +    BeginClipToDrawingCommands,
&gt; +    EndClipToDrawingCommands,

At some point we should make this more generic (for filters etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732407</commentid>
    <comment_count>10</comment_count>
      <attachid>421218</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-22 17:49:45 -0800</bug_when>
    <thetext>Comment on attachment 421218
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemType.h:55
&gt;&gt; +    EndClipToDrawingCommands,
&gt; 
&gt; At some point we should make this more generic (for filters etc).

I wish we could encode/decode the DisplayList instead of these two markers. But the current DisplayList implementation makes it a little bit hard unless we do a significant code re-factoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732410</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-22 18:01:02 -0800</bug_when>
    <thetext>Committed r273291: &lt;https://commits.webkit.org/r273291&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421218.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732412</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-22 18:02:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/74622997&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734753</commentid>
    <comment_count>13</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-03-01 22:34:58 -0800</bug_when>
    <thetext>*** Bug 220377 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421096</attachid>
            <date>2021-02-20 11:55:45 -0800</date>
            <delta_ts>2021-02-22 11:52:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222230-20210220115544.patch</filename>
            <type>text/plain</type>
            <size>31459</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjZGU3ODA1YmU2NWIz
YjQxZjM4NTFmZGE0ZGZkZjQ4NTQ5ZGM3ZC4uOGJlODA5MmQwNzZkMTZhZjlhNzRjNTRiMWVlZGFk
ODcwM2EwNzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTAyLTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IHRoZSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgaXRlbSBieSB1c2luZyBiZWdpbiBh
bmQgZW5kIG1hcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluc3RlYWQgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBjbGlwcGluZyBjb21t
YW5kcyBhcyBhIHNlcGFyYXRlCisgICAgICAgIERpc3BsYXlMaXN0LCB0aGUgcmVjb3JkZXIgd2ls
bCBpbnNlcnQgYSAiYmVnaW4iIGFuZCAiZW5kIiBtYXJrZXJzIGJlZm9yZQorICAgICAgICBhbmQg
YWZ0ZXIgdGhlIGNsaXBwaW5nIGNvbW1hbmRzLiAKKworICAgICAgICBXaGVuIHJlcGxheWluZyB0
aGUgImJlZ2luIiBtYXJrLCB0aGUgcmVscGF5ZXIgd2lsbCBjcmVhdGUgYSBtYXNrIEltYWdlQnVm
ZmVyCisgICAgICAgIGFuZCBmb3JjZSB1c2luZyBpdHMgY29udGV4dCBmb3IgdGhlIGZvbGxvd2lu
ZyBpdGVtcy4KKworICAgICAgICBXaGVuIHJlcGxheWluZyB0aGUgImVuZCIgbWFyaywgaXQgd2ls
bCBjbGlwIHRoZSBvcmlnaW5hbCBjb250ZXh0IHRvIHRoZQorICAgICAgICBtYXNrIEltYWdlQnVm
ZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2Fm
ZUNvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpz
aXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRl
c3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpvcGVyYXRvcj0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdD
b21tYW5kczo6ZGVzdGluYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjpkcmF3aW5nQ29tbWFuZHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6Y29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKwog
MjAyMS0wMi0xOSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogSW1wbGVtZW50IEdyaWQgT3ZlcmxheSAiU2hvdyBsaW5lIG5hbWVzIiBk
cmF3aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDA5NDM2ZGZlZmQzNTY1ZTgwODBiM2E5MThjNzEzZGYzMGEwMWNi
N2EuLjMyZjA1MTFjZGQ4MmExNmE1ZDZmNzdlOGZjZmUwNTg4MTQ5MjQ3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgdGhlIENsaXBUb0RyYXdp
bmdDb21tYW5kcyBpdGVtIGJ5IHVzaW5nIGJlZ2luIGFuZCBlbmQgbWFya2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgRGlzcGxh
eUxpc3QgaXRlbSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgYnkgdGhlIHBhaXIgaXRlbXMKKyAgICAg
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMgYW5kIEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0
ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKwogMjAyMS0wMi0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggc29tZSBpbnRlcm5hbCBidWlsZHMgYWZ0
ZXIgcjI3MzE4NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZTA3OWY3MzBiZTg1OWFj
M2IwNWI5NDI5YzMwZTgzNjFkMTQzYWViNC4uZTY0Mzc4NjM4NDMwODg0ODc0Y2YwZDRlYzYyNTI3
OGY4NTFjMDg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yMzMsMTAgKzIzMywx
MCBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBy
ZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBQ
YXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47IC8vIEZJWE1FOiBTdXBwb3J0IHRoZSBhYmlsaXR5IHRvIGNsb25lIGRpc3BsYXkgbGlz
dHMgKHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgZGlzcGxheSBsaXN0IHRyYWNraW5n
KS4KLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
CisgICAgICAgIHJldHVybiBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0u
Z2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBocz4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAppbmRleCAzOTVmZTY3MWNjZjc0MjJhMTY1Njc2Yzc5Y2QxZTA5ZWY1NTlhOTRkLi4wZjgxMTRi
ODFkZGM1YWFiYzE3ZDViMTU0ZThkOTdjNzM1N2QxMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMTMyLDggKzEzMiwxMiBAQCB2b2lkIEl0ZW1I
YW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgZ2V0PENsaXBQ
YXRoPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBnZXQ8Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpLmFwcGx5KGNvbnRleHQpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kczogeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgpAQCAtMjk4LDEwICsz
MDIsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8Q2xpcFBhdGg+
KCkufkNsaXBQYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIGdldDxDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KCkufkNsaXBUb0RyYXdpbmdDb21tYW5kcygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7CiAgICAgICAgIGdldDxE
cmF3Rm9jdXNSaW5nUGF0aD4oKS5+RHJhd0ZvY3VzUmluZ1BhdGgoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzc2LDYgKzM3NiwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjogewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBA
IC00MzIsNiArNDM2LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFs
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2
Niw4ICs1NzQsNiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGlu
YXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0VG9QYXRoPigqdGhp
cywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJl
dHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENs
aXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3Vz
UmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUmVjdHM6CkBAIC02MTIsNiArNjE4LDggQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29w
eShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5
U3Ryb2tlUGF0dGVybjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVy
bj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRy
YW5zcGFyZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OgpAQCAtNjM0LDYgKzY0Miw4IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHko
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6
CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICByZXR1
cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcAppbmRleCBjMGM3M2I4M2JkNTJlYWEwNGE5NTE3ODE4MDQ0NTM5NDdiYmM5
NWU5Li41NjkyNTAwNjUxYWEyYmFkNGU4OTFkODk3NDAyYjFhZDMwYjYwYjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC03OCw4ICs3OCwxMCBAQCBzdGF0
aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAgICAgICAgIHJldHVy
biBzaXplb2YoQ2xpcE91dFRvUGF0aCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoQ2xpcFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgor
ICAgICAgICByZXR1cm4gc2l6ZW9mKEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBz
aXplb2YoRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKQEAgLTE3OSw3ICsxODEsOCBAQCBib29sIGlzRHJhd2lu
Z0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKQEAgLTI1
MSw3ICsyNTQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgpAQCAtMjc5LDYgKzI4MSw4IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgogICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgorICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5k
ZXggMGU5NDdhMDZkYWI1YTJkZmI0NzY5MDgyZjhjYWM1NDhhZjg5MzQzYi4uY2Q2YzFhNDk5Yzk4
MjE2ZTEyNjU4MGMzZTNjYzRhM2Q4YzI2OTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5oCkBAIC01MSw3ICs1MSw4IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50
OF90IHsKICAgICBDbGlwVG9JbWFnZUJ1ZmZlciwKICAgICBDbGlwT3V0VG9QYXRoLAogICAgIENs
aXBQYXRoLAotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgRHJhd0dseXBo
cywKICAgICBEcmF3SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGU1MWFjMTM5ZDJhZjQwMTQ5NmNlZDIwOTUz
ZmVmYmUzNThlZTU3NGEuLjYyOGZjNWMwNTU5NTIyMmRiMmQ3MzY4ODg4YmVkYjc2NWUzMTQ4MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTM0NywxOCArMzQ3LDE2
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLXZvaWQgQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGl0ZW0pCiB7Ci0gICAgY29udGV4dC5jbGlwVG9EcmF3aW5nQ29tbWFuZHMo
bV9kZXN0aW5hdGlvbiwgbV9jb2xvclNwYWNlLCBbJl0gKEdyYXBoaWNzQ29udGV4dCYgY2xpcHBp
bmdDb250ZXh0KSB7Ci0gICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY2xpcHBpbmdDb250ZXh0
LCBtX2RyYXdpbmdDb21tYW5kcyB9OwotICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKLSAgICB9
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yLXNwYWNlIiwgaXRlbS5jb2xvclNwYWNlKCkp
OworICAgIHJldHVybiB0czsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRlbSkKK3N0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGl0ZW0pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIs
IGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvci1zcGFjZSIs
IGl0ZW0uY29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4gdHM7CiB9CiAKQEAgLTEwMzUsNyArMTAz
Myw4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB0cyA8PCAi
Y2xpcC10by1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczogdHMg
PDwgImJlZ2luLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kczoiOyBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJlbmQtY2xpcC10by1kcmF3
aW5nLWNvbW1hbmRzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMg
PDwgImRyYXctZ2x5cGhzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOwpAQCAt
MTE0Niw4ICsxMTQ1LDExIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA0NjI4NjU0MmEzOWQ5OGJlYWEwN2E4MjBmMTYwNzQ3NDdk
MDBjNjNhLi45ODZjNzQ1ZDAzN2MzYjNlNzg4NTc1M2RkZmU0OTIwMGNjNmU3MDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTg5Myw3NCArODkzLDQyIEBAIE9wdGlvbmFs
PENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnBhdGgpLCAqd2luZFJ1bGUgfX07CiB9CiAKLWNsYXNzIENsaXBUb0RyYXdp
bmdDb21tYW5kcyB7CitjbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpDbGlw
VG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlz
cGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UpCiAgICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAg
LCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhX
VEZNb3ZlKGRyYXdpbmdDb21tYW5kcykpCi0gICAgewotICAgIH0KLQotICAgIENsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIG90aGVyKQotICAgICAgICA6
IG1fZGVzdGluYXRpb24ob3RoZXIubV9kZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3Bh
Y2Uob3RoZXIubV9jb2xvclNwYWNlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IENvcHkgbV9k
cmF3aW5nQ29tbWFuZHMuCi0gICAgfQotCi0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBvcGVy
YXRvcj0oY29uc3QgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBvdGhlcikKICAgICB7Ci0gICAgICAg
IG1fZGVzdGluYXRpb24gPSBvdGhlci5tX2Rlc3RpbmF0aW9uOwotICAgICAgICBtX2NvbG9yU3Bh
Y2UgPSBvdGhlci5tX2NvbG9yU3BhY2U7Ci0gICAgICAgIC8vIEZJWE1FOiBDb3B5IG1fZHJhd2lu
Z0NvbW1hbmRzLgotICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KICAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3JTcGFjZTsgfQotICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkcmF3aW5nQ29tbWFuZHMoKSBjb25z
dCB7IHJldHVybiBtX2RyYXdpbmdDb21tYW5kczsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGRlY29kZShEZWNv
ZGVyJik7Ci0KLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgRGlzcGxheUxpc3QgbV9kcmF3aW5nQ29tbWFuZHM7CiB9
OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9kZXN0
aW5hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGEgd2F5IHRvIGVuY29kZSBpbi1tZW1vcnkgZGlzcGxheSBsaXN0cy4KLX0KK2NsYXNz
IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENsaXBUb0RyYXdpbmdDb21tYW5kcz4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGRlc3RpbmF0aW9uOwotICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247Ci0gICAgaWYg
KCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICAgICAg
OiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICB9CiAKLSAgICBPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Ci0gICAgZGVjb2RlciA+PiBjb2xv
clNwYWNlOwotICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbjsgfQogCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBhIHdheSB0byBkZWNvZGUg
aW4tbWVtb3J5IGRpc3BsYXkgbGlzdHMuCi0gICAgRGlzcGxheUxpc3QgZHJhd2luZ0NvbW1hbmRz
OwotICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdp
bmdDb21tYW5kcykgfX07Ci19Citwcml2YXRlOgorICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9u
OworfTsKIAogY2xhc3MgRHJhd0dseXBocyB7CiBwdWJsaWM6CkBAIC0yMzQ1LDcgKzIzMTMsOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VC
dWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGgsCi0gICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTdmOWUyOGMzNTAyMTll
ODEzZDg4MzQwZmY0ZjU0ZGUyMmZjMTBjMy4uYmE1MDhlY2YzOWI0MWNiNmQwNTc1NzYyMTRhYjRk
NDU3Mjc4NDNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtNDM5LDE5ICs0MzksOSBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdAogCiB2b2lkIFJlY29y
ZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewotICAgIC8vIFRoZSBpbml0aWFsIENUTSBt
YXRjaGVzIEltYWdlQnVmZmVyJ3MgaW5pdGlhbCBDVE0uCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRy
YW5zZm9ybSA9IGdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNl
U2NhbGUpOwotICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3Rvcih0cmFuc2Zvcm0ueFNjYWxlKCksIHRy
YW5zZm9ybS55U2NhbGUoKSk7Ci0gICAgYXV0byBzY2FsZWRTaXplID0gZXhwYW5kZWRJbnRTaXpl
KGRlc3RpbmF0aW9uLnNpemUoKSAqIHNjYWxlRmFjdG9yKTsKLQotICAgIEFmZmluZVRyYW5zZm9y
bSBpbml0aWFsQ1RNOwotICAgIGluaXRpYWxDVE0uc2NhbGUoMSwgLTEpOwotICAgIGluaXRpYWxD
VE0udHJhbnNsYXRlKDAsIC1zY2FsZWRTaXplLmhlaWdodCgpKTsKLSAgICBpbml0aWFsQ1RNLnNj
YWxlKHNjYWxlZFNpemUgLyBkZXN0aW5hdGlvbi5zaXplKCkpOwotCi0gICAgYXV0byByZWNvcmRp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcmF3aW5nQ29udGV4dD4oZGVzdGluYXRpb24uc2l6ZSgp
LCBpbml0aWFsQ1RNKTsKLSAgICBkcmF3aW5nRnVuY3Rpb24ocmVjb3JkaW5nQ29udGV4dC0+Y29u
dGV4dCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwg
Y29sb3JTcGFjZSwgcmVjb3JkaW5nQ29udGV4dC0+dGFrZURpc3BsYXlMaXN0KCkpOworICAgIGFw
cGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24sIGNvbG9yU3BhY2Up
OworICAgIGRyYXdpbmdGdW5jdGlvbihncmFwaGljc0NvbnRleHQoKSk7CisgICAgYXBwZW5kPEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOwogfQogCiBib29sIFJlY29yZGVy
OjpjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImIHBsYXllcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA0ZDkwNmEyNDU2
NDQ2MmY2ZTAxODE2OWQxYjE2ODk5MmQ4ZGYyY2NhLi41MzMxNTMzZDc0YTY0MjczM2JjN2NkYjA5
YWEwZWQ5N2M5YzhjNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCkBAIC00Niw2ICs0NiwxMSBAQCBSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbgogCiBSZXBsYXll
cjo6flJlcGxheWVyKCkgPSBkZWZhdWx0OwogCitHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpj
b250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJ
bWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbV9jb250ZXh0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBU
PgogaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VC
dWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKQEAgLTEwNyw0
NiArMTEyLDY1IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAKIHN0ZDo6cGFpcjxPcHRpb25h
bDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
Pj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7Ci0gICAgaWYgKG1fZGVs
ZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKKyAgICBpZiAobV9k
ZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1f
Y29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPENsaXBU
b0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9j
b250ZXh0LCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3
TmF0aXZlSW1hZ2U+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250
ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1h
Z2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBo
cz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihtX2NvbnRleHQsIG1fZm9udHMsIGl0ZW0pKQor
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlG
b250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQs
IG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250
ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNl
dFN0YXRlSXRlbShtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVt
KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCi0gICAgaXRlbS5hcHBseShtX2NvbnRleHQpOwor
ICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgICAg
IGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgYXV0byYgY2xpcEl0
ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKKyAgICAgICAgbV9t
YXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlw
SXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRl
eHQpOworICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OworICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0KKworICAgIGlm
IChpdGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgICAgICBpZiAoIW1f
bWFza0ltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OworICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0
ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKKyAgICAgICAgbV9jb250ZXh0LmNs
aXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGluYXRpb24o
KSk7CisgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKKyAgICBpdGVtLmFwcGx5
KGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggZDJkZTBiNmZl
NWU4YTFkMGM2YmYxZTkxMWM2NjcyZmQ0YWI2NmFkNC4uN2FjZGJlNjdkNjY4OWQ5YWExNDk0ZTU0
ZGE2ZjExYzI4YjliOTUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CkBAIC02OSw5ICs2OSwxMSBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKIHByaXZhdGU6CisgICAg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAgICAgc3RkOjpwYWlyPE9wdGlvbmFs
PFN0b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+
PiBhcHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4
dDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwog
ICAgIGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVm
ZmVySGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFw
JiBtX25hdGl2ZUltYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9n
cmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBiM2ViNmI2OTZh
OTM0OTkzNzcyMjNkNzkyOGY5YTBkMjk5NjE3ZjJhLi4wYjE0NzVmMmIyNDExMWUxNjQ3YzBhYzIy
ZDYzNDMwNDZhNGM5ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3Jh
cGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC00MDYsOCArNDA2
LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVS
TiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpkZWMKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENy
ZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2Nh
dGlvbik7CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAg
ICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRlPERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVu
Z3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0gICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNw
bGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0
aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6
CiAgICAgICAgIHJldHVybiBkZWNvZGVBbmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1Jp
bmdQYXRoPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3RzOgpAQCAtNDQ5LDYgKzQ0Nyw4IEBAIE9w
dGlvbmFsPERpc3BsYXlMaXN0OjpJdGVtSGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXA6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBE
aXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgorICAgIGNhc2UgRGlzcGxh
eUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICBjYXNlIERp
c3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2Ug
RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIERpc3Bs
YXlMaXN0OjpJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CmluZGV4IDBjYTJiYjIwM2U0Yzc0MjdiNTQ0ZTZlM2E3NDNkNmMxODA1MzkyYjAuLjI3MzM0NGM2
MzdmMmM1Nzc1ZGUzNDAyNzU0MzdiZTUyN2Y3MTQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC0yODAsOCArMjgwLDYgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJu
IElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2luZ2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpD
bGlwT3V0VG9QYXRoPihpdGVtLmdldDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0
aD4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlw
UGF0aDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVj
dDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpDbGlwUGF0aD4oKSk7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6
Okl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6Ci0gICAgICAgICAgICByZXR1cm4gSVBD
OjpFbmNvZGVyOjplbmNvZGVTaW5nbGVPYmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oaXRlbS5nZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0Ry
YXdpbmdDb21tYW5kcz4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0
ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29k
ZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmlu
Z1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4o
KSk7CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUmVjdHM6CkBAIC0zMjMsNiArMzIxLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNl
IFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcDoKICAgICAgICAgY2FzZSBXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZlcjoKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgorICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xp
cFRvRHJhd2luZ0NvbW1hbmRzOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxp
c3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAgICAgICBjYXNlIFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0VsbGlwc2U6CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjM5YjMz
ZmU3NzgwODRhYjA4YjIxM2M1YjViOTcyM2RjMzA5ZTAzZi4uODgxYmE1ZDcyZjIyODkzYzgyMWE0
NTg3ZTVmNzNmNDE5MmRjY2FhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTIwICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vz
c10gSW1wbGVtZW50IHRoZSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgaXRlbSBieSB1c2luZyBiZWdp
biBhbmQgZW5kIG1hcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoZSB0ZXh0IHdpdGggZ3JhZGllbnQgdGVzdHMgd2lsbCBiZSBmaXhlZCBieSB0
aGlzIGNoYW5nZS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisK
IDIwMjEtMDItMTkgIFJvYmVydCBKZW5uZXIgIDxqZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFsgbWFjT1MgV2sgMiBdIGluc3BlY3Rvci9kZWJ1Z2dlci9hc3luYy1zdGFjay10cmFjZS1iYXNp
Yy5odG1sIGlzIGZsYWtleSB0aW1pbmcgb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUt
cHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBmNTBmZGFkNmY5ZjdlNzE2NThmYjdjMzIzMGE1OGQ5NGY1MTMzYTQ3
Li4wZDY5YzkwYzg4Y2ZlNDFhOTU5YzA0ZGM3NDk3YWY4Mjg5YWQxYjFkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTYsNyArNiw2IEBAIGNzczMvYmxlbmRp
bmcvYmxlbmQtbW9kZS1jbGlwLWFjY2VsZXJhdGVkLWJsZW5kaW5nLWNhbnZhcy5odG1sIFsgRmFp
bHVyZSBdCiBkaXNwbGF5bGlzdHMvY2FudmFzLWRpc3BsYXktbGlzdC5odG1sIFsgRmFpbHVyZSBd
CiAKICMgd2Via2l0Lm9yZy9iLzIyMDM4OQotZmFzdC9jYW52YXMvMmQuZmlsbFRleHQuZ3JhZGll
bnQuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9jYW52YXMvY2FudmFzLWFyYy0zNjAtd2luZGluZy5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy9jYW52YXMtYXJjLWNvbm5lY3RpbmctbGluZS5o
dG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy9jYW52YXMtYXJjLXplcm8tbGluZXRvLmh0bWwg
WyBGYWlsdXJlIF0KQEAgLTUxLDE5ICs1MCw2IEBAIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtc3Ry
ZWFtLXRyYWNrLWludGVycnVwdGVkLmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvcmVwYWludC9jYW52
YXMtb2JqZWN0LWZpdC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L3JlcGFpbnQvY2FudmFzLXB1dElt
YWdlRGF0YS5odG1sIFsgRmFpbHVyZSBdCiAKLSMgd2Via2l0Lm9yZy9iLzIyMDM3NwotZmFzdC90
ZXh0L2NhbnZhcy1jb2xvci1mb250cy9maWxsLWdyYWRpZW50LUNPTFItMi5odG1sIFsgSW1hZ2VP
bmx5RmFpbHVyZSBdCi1mYXN0L3RleHQvY2FudmFzLWNvbG9yLWZvbnRzL3N0cm9rZS1ncmFkaWVu
dC1DT0xSLTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotZmFzdC90ZXh0L2NhbnZhcy1jb2xv
ci1mb250cy9zdHJva2UtZ3JhZGllbnQtQ09MUi0zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
LWZhc3QvdGV4dC9jYW52YXMtY29sb3ItZm9udHMvc3Ryb2tlLWdyYWRpZW50LUNPTFItNC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1mYXN0L3RleHQvY2FudmFzLWNvbG9yLWZvbnRzL3N0cm9r
ZS1ncmFkaWVudC1DT0xSLTUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9j
YW52YXMvY29sb3ItZm9udHMvZmlsbC1ncmFkaWVudC1zYml4LTIuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMvZmlsbC1ncmFkaWVudC1zYml4
LTMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9u
dHMvZmlsbC1ncmFkaWVudC1zYml4LTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90
ZXN0cy9jYW52YXMvY29sb3ItZm9udHMvc3Ryb2tlLWdyYWRpZW50LXNiaXgtMi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCi1odHRwL3Rlc3RzL2NhbnZhcy9jb2xvci1mb250cy9zdHJva2UtZ3Jh
ZGllbnQtc2JpeC0zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWh0dHAvdGVzdHMvY2FudmFz
L2NvbG9yLWZvbnRzL3N0cm9rZS1ncmFkaWVudC1zYml4LTQuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotCiAjIHdlYmtpdC5vcmcvYi8yMjE2OTQKIGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkv
Y2xlYXIta2V5LWhscy1hZXMxMjguaHRtbCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9tZWRpYS9j
bGVhcmtleS9jb2xsZWN0LXdlYmtpdC1tZWRpYS1zZXNzaW9uLmh0bWwgWyBDcmFzaCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421216</attachid>
            <date>2021-02-22 11:52:37 -0800</date>
            <delta_ts>2021-02-22 11:53:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222230-20210222115237.patch</filename>
            <type>text/plain</type>
            <size>32347</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjZGU3ODA1YmU2NWIz
YjQxZjM4NTFmZGE0ZGZkZjQ4NTQ5ZGM3ZC4uOGJlODA5MmQwNzZkMTZhZjlhNzRjNTRiMWVlZGFk
ODcwM2EwNzllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTAyLTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IHRoZSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgaXRlbSBieSB1c2luZyBiZWdpbiBh
bmQgZW5kIG1hcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluc3RlYWQgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBjbGlwcGluZyBjb21t
YW5kcyBhcyBhIHNlcGFyYXRlCisgICAgICAgIERpc3BsYXlMaXN0LCB0aGUgcmVjb3JkZXIgd2ls
bCBpbnNlcnQgYSAiYmVnaW4iIGFuZCAiZW5kIiBtYXJrZXJzIGJlZm9yZQorICAgICAgICBhbmQg
YWZ0ZXIgdGhlIGNsaXBwaW5nIGNvbW1hbmRzLiAKKworICAgICAgICBXaGVuIHJlcGxheWluZyB0
aGUgImJlZ2luIiBtYXJrLCB0aGUgcmVscGF5ZXIgd2lsbCBjcmVhdGUgYSBtYXNrIEltYWdlQnVm
ZmVyCisgICAgICAgIGFuZCBmb3JjZSB1c2luZyBpdHMgY29udGV4dCBmb3IgdGhlIGZvbGxvd2lu
ZyBpdGVtcy4KKworICAgICAgICBXaGVuIHJlcGxheWluZyB0aGUgImVuZCIgbWFyaywgaXQgd2ls
bCBjbGlwIHRoZSBvcmlnaW5hbCBjb250ZXh0IHRvIHRoZQorICAgICAgICBtYXNrIEltYWdlQnVm
ZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2Fm
ZUNvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpz
aXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRl
c3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpvcGVyYXRvcj0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdD
b21tYW5kczo6ZGVzdGluYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjpkcmF3aW5nQ29tbWFuZHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6Y29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKwog
MjAyMS0wMi0xOSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogSW1wbGVtZW50IEdyaWQgT3ZlcmxheSAiU2hvdyBsaW5lIG5hbWVzIiBk
cmF3aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDA5NDM2ZGZlZmQzNTY1ZTgwODBiM2E5MThjNzEzZGYzMGEwMWNi
N2EuLjMyZjA1MTFjZGQ4MmExNmE1ZDZmNzdlOGZjZmUwNTg4MTQ5MjQ3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgdGhlIENsaXBUb0RyYXdp
bmdDb21tYW5kcyBpdGVtIGJ5IHVzaW5nIGJlZ2luIGFuZCBlbmQgbWFya2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgRGlzcGxh
eUxpc3QgaXRlbSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgYnkgdGhlIHBhaXIgaXRlbXMKKyAgICAg
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMgYW5kIEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0
ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKwogMjAyMS0wMi0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggc29tZSBpbnRlcm5hbCBidWlsZHMgYWZ0
ZXIgcjI3MzE4NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZTA3OWY3MzBiZTg1OWFj
M2IwNWI5NDI5YzMwZTgzNjFkMTQzYWViNC4uZTY0Mzc4NjM4NDMwODg0ODc0Y2YwZDRlYzYyNTI3
OGY4NTFjMDg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yMzMsMTAgKzIzMywx
MCBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBy
ZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBQ
YXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47IC8vIEZJWE1FOiBTdXBwb3J0IHRoZSBhYmlsaXR5IHRvIGNsb25lIGRpc3BsYXkgbGlz
dHMgKHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgZGlzcGxheSBsaXN0IHRyYWNraW5n
KS4KLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
CisgICAgICAgIHJldHVybiBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0u
Z2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBocz4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAppbmRleCAzOTVmZTY3MWNjZjc0MjJhMTY1Njc2Yzc5Y2QxZTA5ZWY1NTlhOTRkLi4wZjgxMTRi
ODFkZGM1YWFiYzE3ZDViMTU0ZThkOTdjNzM1N2QxMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMTMyLDggKzEzMiwxMiBAQCB2b2lkIEl0ZW1I
YW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgZ2V0PENsaXBQ
YXRoPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBnZXQ8Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpLmFwcGx5KGNvbnRleHQpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kczogeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgpAQCAtMjk4LDEwICsz
MDIsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8Q2xpcFBhdGg+
KCkufkNsaXBQYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIGdldDxDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KCkufkNsaXBUb0RyYXdpbmdDb21tYW5kcygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7CiAgICAgICAgIGdldDxE
cmF3Rm9jdXNSaW5nUGF0aD4oKS5+RHJhd0ZvY3VzUmluZ1BhdGgoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzc2LDYgKzM3NiwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjogewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBA
IC00MzIsNiArNDM2LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFs
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2
Niw4ICs1NzQsNiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGlu
YXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0VG9QYXRoPigqdGhp
cywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJl
dHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENs
aXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3Vz
UmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUmVjdHM6CkBAIC02MTIsNiArNjE4LDggQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29w
eShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5
U3Ryb2tlUGF0dGVybjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVy
bj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRy
YW5zcGFyZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OgpAQCAtNjM0LDYgKzY0Miw4IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHko
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6
CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICByZXR1
cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcAppbmRleCBjMGM3M2I4M2JkNTJlYWEwNGE5NTE3ODE4MDQ0NTM5NDdiYmM5
NWU5Li41NjkyNTAwNjUxYWEyYmFkNGU4OTFkODk3NDAyYjFhZDMwYjYwYjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC03OCw4ICs3OCwxMCBAQCBzdGF0
aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAgICAgICAgIHJldHVy
biBzaXplb2YoQ2xpcE91dFRvUGF0aCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoQ2xpcFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgor
ICAgICAgICByZXR1cm4gc2l6ZW9mKEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBz
aXplb2YoRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKQEAgLTE3OSw3ICsxODEsOCBAQCBib29sIGlzRHJhd2lu
Z0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKQEAgLTI1
MSw3ICsyNTQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgpAQCAtMjc5LDYgKzI4MSw4IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgogICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgorICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5k
ZXggMGU5NDdhMDZkYWI1YTJkZmI0NzY5MDgyZjhjYWM1NDhhZjg5MzQzYi4uY2Q2YzFhNDk5Yzk4
MjE2ZTEyNjU4MGMzZTNjYzRhM2Q4YzI2OTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5oCkBAIC01MSw3ICs1MSw4IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50
OF90IHsKICAgICBDbGlwVG9JbWFnZUJ1ZmZlciwKICAgICBDbGlwT3V0VG9QYXRoLAogICAgIENs
aXBQYXRoLAotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgRHJhd0dseXBo
cywKICAgICBEcmF3SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGU1MWFjMTM5ZDJhZjQwMTQ5NmNlZDIwOTUz
ZmVmYmUzNThlZTU3NGEuLjYyOGZjNWMwNTU5NTIyMmRiMmQ3MzY4ODg4YmVkYjc2NWUzMTQ4MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTM0NywxOCArMzQ3LDE2
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLXZvaWQgQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGl0ZW0pCiB7Ci0gICAgY29udGV4dC5jbGlwVG9EcmF3aW5nQ29tbWFuZHMo
bV9kZXN0aW5hdGlvbiwgbV9jb2xvclNwYWNlLCBbJl0gKEdyYXBoaWNzQ29udGV4dCYgY2xpcHBp
bmdDb250ZXh0KSB7Ci0gICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY2xpcHBpbmdDb250ZXh0
LCBtX2RyYXdpbmdDb21tYW5kcyB9OwotICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKLSAgICB9
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yLXNwYWNlIiwgaXRlbS5jb2xvclNwYWNlKCkp
OworICAgIHJldHVybiB0czsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRlbSkKK3N0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGl0ZW0pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIs
IGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvci1zcGFjZSIs
IGl0ZW0uY29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4gdHM7CiB9CiAKQEAgLTEwMzUsNyArMTAz
Myw4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB0cyA8PCAi
Y2xpcC10by1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczogdHMg
PDwgImJlZ2luLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kczoiOyBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJlbmQtY2xpcC10by1kcmF3
aW5nLWNvbW1hbmRzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMg
PDwgImRyYXctZ2x5cGhzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOwpAQCAt
MTE0Niw4ICsxMTQ1LDExIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA0NjI4NjU0MmEzOWQ5OGJlYWEwN2E4MjBmMTYwNzQ3NDdk
MDBjNjNhLi45ODZjNzQ1ZDAzN2MzYjNlNzg4NTc1M2RkZmU0OTIwMGNjNmU3MDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTg5Myw3NCArODkzLDQyIEBAIE9wdGlvbmFs
PENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnBhdGgpLCAqd2luZFJ1bGUgfX07CiB9CiAKLWNsYXNzIENsaXBUb0RyYXdp
bmdDb21tYW5kcyB7CitjbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpDbGlw
VG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlz
cGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UpCiAgICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAg
LCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhX
VEZNb3ZlKGRyYXdpbmdDb21tYW5kcykpCi0gICAgewotICAgIH0KLQotICAgIENsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIG90aGVyKQotICAgICAgICA6
IG1fZGVzdGluYXRpb24ob3RoZXIubV9kZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3Bh
Y2Uob3RoZXIubV9jb2xvclNwYWNlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IENvcHkgbV9k
cmF3aW5nQ29tbWFuZHMuCi0gICAgfQotCi0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBvcGVy
YXRvcj0oY29uc3QgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBvdGhlcikKICAgICB7Ci0gICAgICAg
IG1fZGVzdGluYXRpb24gPSBvdGhlci5tX2Rlc3RpbmF0aW9uOwotICAgICAgICBtX2NvbG9yU3Bh
Y2UgPSBvdGhlci5tX2NvbG9yU3BhY2U7Ci0gICAgICAgIC8vIEZJWE1FOiBDb3B5IG1fZHJhd2lu
Z0NvbW1hbmRzLgotICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KICAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3JTcGFjZTsgfQotICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkcmF3aW5nQ29tbWFuZHMoKSBjb25z
dCB7IHJldHVybiBtX2RyYXdpbmdDb21tYW5kczsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGRlY29kZShEZWNv
ZGVyJik7Ci0KLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgRGlzcGxheUxpc3QgbV9kcmF3aW5nQ29tbWFuZHM7CiB9
OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9kZXN0
aW5hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGEgd2F5IHRvIGVuY29kZSBpbi1tZW1vcnkgZGlzcGxheSBsaXN0cy4KLX0KK2NsYXNz
IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENsaXBUb0RyYXdpbmdDb21tYW5kcz4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGRlc3RpbmF0aW9uOwotICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247Ci0gICAgaWYg
KCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICAgICAg
OiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICB9CiAKLSAgICBPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Ci0gICAgZGVjb2RlciA+PiBjb2xv
clNwYWNlOwotICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbjsgfQogCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBhIHdheSB0byBkZWNvZGUg
aW4tbWVtb3J5IGRpc3BsYXkgbGlzdHMuCi0gICAgRGlzcGxheUxpc3QgZHJhd2luZ0NvbW1hbmRz
OwotICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdp
bmdDb21tYW5kcykgfX07Ci19Citwcml2YXRlOgorICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9u
OworfTsKIAogY2xhc3MgRHJhd0dseXBocyB7CiBwdWJsaWM6CkBAIC0yMzQ1LDcgKzIzMTMsOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VC
dWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGgsCi0gICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTdmOWUyOGMzNTAyMTll
ODEzZDg4MzQwZmY0ZjU0ZGUyMmZjMTBjMy4uYmE1MDhlY2YzOWI0MWNiNmQwNTc1NzYyMTRhYjRk
NDU3Mjc4NDNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtNDM5LDE5ICs0MzksOSBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdAogCiB2b2lkIFJlY29y
ZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewotICAgIC8vIFRoZSBpbml0aWFsIENUTSBt
YXRjaGVzIEltYWdlQnVmZmVyJ3MgaW5pdGlhbCBDVE0uCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRy
YW5zZm9ybSA9IGdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNl
U2NhbGUpOwotICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3Rvcih0cmFuc2Zvcm0ueFNjYWxlKCksIHRy
YW5zZm9ybS55U2NhbGUoKSk7Ci0gICAgYXV0byBzY2FsZWRTaXplID0gZXhwYW5kZWRJbnRTaXpl
KGRlc3RpbmF0aW9uLnNpemUoKSAqIHNjYWxlRmFjdG9yKTsKLQotICAgIEFmZmluZVRyYW5zZm9y
bSBpbml0aWFsQ1RNOwotICAgIGluaXRpYWxDVE0uc2NhbGUoMSwgLTEpOwotICAgIGluaXRpYWxD
VE0udHJhbnNsYXRlKDAsIC1zY2FsZWRTaXplLmhlaWdodCgpKTsKLSAgICBpbml0aWFsQ1RNLnNj
YWxlKHNjYWxlZFNpemUgLyBkZXN0aW5hdGlvbi5zaXplKCkpOwotCi0gICAgYXV0byByZWNvcmRp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcmF3aW5nQ29udGV4dD4oZGVzdGluYXRpb24uc2l6ZSgp
LCBpbml0aWFsQ1RNKTsKLSAgICBkcmF3aW5nRnVuY3Rpb24ocmVjb3JkaW5nQ29udGV4dC0+Y29u
dGV4dCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwg
Y29sb3JTcGFjZSwgcmVjb3JkaW5nQ29udGV4dC0+dGFrZURpc3BsYXlMaXN0KCkpOworICAgIGFw
cGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24sIGNvbG9yU3BhY2Up
OworICAgIGRyYXdpbmdGdW5jdGlvbihncmFwaGljc0NvbnRleHQoKSk7CisgICAgYXBwZW5kPEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOwogfQogCiBib29sIFJlY29yZGVy
OjpjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImIHBsYXllcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA0ZDkwNmEyNDU2
NDQ2MmY2ZTAxODE2OWQxYjE2ODk5MmQ4ZGYyY2NhLi5kMTczN2EyNzljMzk3ZTA5MDkzZDEzODQz
M2RiMzg0N2Q2ZjQ3NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCkBAIC00Niw2ICs0NiwxMSBAQCBSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbgogCiBSZXBsYXll
cjo6flJlcGxheWVyKCkgPSBkZWZhdWx0OwogCitHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpj
b250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJ
bWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbV9jb250ZXh0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBU
PgogaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VC
dWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKQEAgLTEwNyw0
NiArMTEyLDY1IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAKIHN0ZDo6cGFpcjxPcHRpb25h
bDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
Pj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7Ci0gICAgaWYgKG1fZGVs
ZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKKyAgICBpZiAobV9k
ZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1f
Y29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPENsaXBU
b0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9j
b250ZXh0LCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3
TmF0aXZlSW1hZ2U+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250
ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1h
Z2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBo
cz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihtX2NvbnRleHQsIG1fZm9udHMsIGl0ZW0pKQor
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlG
b250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQs
IG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250
ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNl
dFN0YXRlSXRlbShtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVt
KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCi0gICAgaXRlbS5hcHBseShtX2NvbnRleHQpOwor
ICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgICAg
IGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgYXV0byYgY2xpcEl0
ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKKyAgICAgICAgbV9t
YXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlw
SXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRl
eHQpOworICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OworICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0KKworICAgIGlm
IChpdGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgICAgICBpZiAoIW1f
bWFza0ltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OworICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0
ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKKyAgICAgICAgbV9jb250ZXh0LmNs
aXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGluYXRpb24o
KSk7CisgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKKyAgICBpdGVtLmFwcGx5
KGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggZDJkZTBiNmZl
NWU4YTFkMGM2YmYxZTkxMWM2NjcyZmQ0YWI2NmFkNC4uMTgxYTEyYjBlNTE4ZThkYzIxZDNiNzQ5
ZjI3MTAxZDJhM2U5NmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CkBAIC00Miw3ICs0Miw4IEBAIGVudW0gY2xhc3MgU3RvcFJlcGxheVJlYXNvbiA6IHVpbnQ4X3Qg
ewogICAgIFJlcGxheWVkQWxsSXRlbXMsCiAgICAgTWlzc2luZ0NhY2hlZFJlc291cmNlLAogICAg
IENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsCi0gICAgSW52YWxpZEl0ZW0KKyAgICBJbnZh
bGlkSXRlbSwKKyAgICBPdXRPZk1lbW9yeQogfTsKIAogc3RydWN0IFJlcGxheVJlc3VsdCB7CkBA
IC02OSw5ICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKIHByaXZhdGU6CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAgICAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0
b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBh
cHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwogICAg
IGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVy
SGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBt
X25hdGl2ZUltYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBiM2ViNmI2OTZhOTM0
OTkzNzcyMjNkNzkyOGY5YTBkMjk5NjE3ZjJhLi4xMzcyYzQzYTg0M2JlZjQ0YzIxZWZlYzU4NGM5
ZDBiNWE5OWQ3N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMDEsNiArMjAxLDcg
QEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHN1Ym1p
dCgqZGlzcGxheUxpc3QsICpkZXN0aW5hdGlvbik7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lU
SF9SRVRVUk5fVkFMVUUocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nICE9IERpc3BsYXlMaXN0OjpT
dG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgbnVsbHB0ciwgIkRldGVjdGVkIGludmFsaWQg
ZGlzcGxheSBsaXN0IGl0ZW0iKTsKKyAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9W
QUxVRShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgIT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlS
ZWFzb246Ok91dE9mTWVtb3J5LCBudWxscHRyLCAiQ291bmQgbm90IGFsbG9jYXRlIG1lbW9yeSIp
OwogCiAgICAgICAgIGF1dG8gYWR2YW5jZVJlc3VsdCA9IGhhbmRsZS5hZHZhbmNlKHJlc3VsdC5u
dW1iZXJPZkJ5dGVzUmVhZCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFM
VUUoYWR2YW5jZVJlc3VsdCwgbnVsbHB0ciwgIkZhaWxlZCB0byBhZHZhbmNlIGRpc3BsYXkgbGlz
dCByZWFkZXIgaGFuZGxlIik7CkBAIC00MDYsOCArNDA3LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWMKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91
dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CiAgICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1JlY3RzOgpAQCAtNDQ5LDYgKzQ0OCw4IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgorICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
b25jYXRlbmF0ZUNUTToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDBjYTJiYjIwM2U0Yzc0Mjdi
NTQ0ZTZlM2E3NDNkNmMxODA1MzkyYjAuLjI3MzM0NGM2MzdmMmM1Nzc1ZGUzNDAyNzU0MzdiZTUy
N2Y3MTQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yODAsOCArMjgwLDYg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2lu
Z2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oKSk7CiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgICAgIHJldHVy
biBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Q2xpcFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oKSk7Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVP
YmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0
aDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6CkBAIC0zMjMsNiAr
MzIxLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBPdXQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwVG9JbWFnZUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0VsbGlwc2U6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjM5YjMzZmU3NzgwODRhYjA4YjIxM2M1YjViOTcy
M2RjMzA5ZTAzZi4uODgxYmE1ZDcyZjIyODkzYzgyMWE0NTg3ZTVmNzNmNDE5MmRjY2FhMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IHRoZSBDbGlwVG9E
cmF3aW5nQ29tbWFuZHMgaXRlbSBieSB1c2luZyBiZWdpbiBhbmQgZW5kIG1hcmtlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXh0IHdpdGgg
Z3JhZGllbnQgdGVzdHMgd2lsbCBiZSBmaXhlZCBieSB0aGlzIGNoYW5nZS4KKworICAgICAgICAq
IGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMTkgIFJvYmVydCBKZW5u
ZXIgIDxqZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgV2sgMiBdIGluc3BlY3Rv
ci9kZWJ1Z2dlci9hc3luYy1zdGFjay10cmFjZS1iYXNpYy5odG1sIGlzIGZsYWtleSB0aW1pbmcg
b3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNTBmZGFk
NmY5ZjdlNzE2NThmYjdjMzIzMGE1OGQ5NGY1MTMzYTQ3Li4wZDY5YzkwYzg4Y2ZlNDFhOTU5YzA0
ZGM3NDk3YWY4Mjg5YWQxYjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTYsNyArNiw2IEBAIGNzczMvYmxlbmRpbmcvYmxlbmQtbW9kZS1jbGlwLWFjY2Vs
ZXJhdGVkLWJsZW5kaW5nLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiBkaXNwbGF5bGlzdHMvY2Fu
dmFzLWRpc3BsYXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCiAKICMgd2Via2l0Lm9yZy9iLzIyMDM4
OQotZmFzdC9jYW52YXMvMmQuZmlsbFRleHQuZ3JhZGllbnQuaHRtbCBbIEZhaWx1cmUgXQogZmFz
dC9jYW52YXMvY2FudmFzLWFyYy0zNjAtd2luZGluZy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Nh
bnZhcy9jYW52YXMtYXJjLWNvbm5lY3RpbmctbGluZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Nh
bnZhcy9jYW52YXMtYXJjLXplcm8tbGluZXRvLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTUxLDE5ICs1
MCw2IEBAIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtc3RyZWFtLXRyYWNrLWludGVycnVwdGVkLmh0
bWwgWyBGYWlsdXJlIF0KIGZhc3QvcmVwYWludC9jYW52YXMtb2JqZWN0LWZpdC5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L3JlcGFpbnQvY2FudmFzLXB1dEltYWdlRGF0YS5odG1sIFsgRmFpbHVyZSBd
CiAKLSMgd2Via2l0Lm9yZy9iLzIyMDM3NwotZmFzdC90ZXh0L2NhbnZhcy1jb2xvci1mb250cy9m
aWxsLWdyYWRpZW50LUNPTFItMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1mYXN0L3RleHQv
Y2FudmFzLWNvbG9yLWZvbnRzL3N0cm9rZS1ncmFkaWVudC1DT0xSLTIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotZmFzdC90ZXh0L2NhbnZhcy1jb2xvci1mb250cy9zdHJva2UtZ3JhZGllbnQt
Q09MUi0zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWZhc3QvdGV4dC9jYW52YXMtY29sb3It
Zm9udHMvc3Ryb2tlLWdyYWRpZW50LUNPTFItNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1m
YXN0L3RleHQvY2FudmFzLWNvbG9yLWZvbnRzL3N0cm9rZS1ncmFkaWVudC1DT0xSLTUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMvZmlsbC1n
cmFkaWVudC1zYml4LTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52
YXMvY29sb3ItZm9udHMvZmlsbC1ncmFkaWVudC1zYml4LTMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMvZmlsbC1ncmFkaWVudC1zYml4LTQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMv
c3Ryb2tlLWdyYWRpZW50LXNiaXgtMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1odHRwL3Rl
c3RzL2NhbnZhcy9jb2xvci1mb250cy9zdHJva2UtZ3JhZGllbnQtc2JpeC0zLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLWh0dHAvdGVzdHMvY2FudmFzL2NvbG9yLWZvbnRzL3N0cm9rZS1ncmFk
aWVudC1zYml4LTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIHdlYmtpdC5vcmcvYi8y
MjE2OTQKIGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjguaHRt
bCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9tZWRpYS9jbGVhcmtleS9jb2xsZWN0LXdlYmtpdC1t
ZWRpYS1zZXNzaW9uLmh0bWwgWyBDcmFzaCBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421218</attachid>
            <date>2021-02-22 11:53:51 -0800</date>
            <delta_ts>2021-02-22 18:01:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222230-20210222115350.patch</filename>
            <type>text/plain</type>
            <size>32347</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGZjZGU3ODA1YmU2NWIz
YjQxZjM4NTFmZGE0ZGZkZjQ4NTQ5ZGM3ZC4uMzQ3ZDQxZTQ5ZGU0OTU0NmU3YTUxN2EwZjVjM2Rm
Mjc0OTMwNDk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIxLTAyLTIwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
SW1wbGVtZW50IHRoZSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgaXRlbSBieSB1c2luZyBiZWdpbiBh
bmQgZW5kIG1hcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMjIzMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEluc3RlYWQgb2YgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBjbGlwcGluZyBjb21t
YW5kcyBhcyBhIHNlcGFyYXRlCisgICAgICAgIERpc3BsYXlMaXN0LCB0aGUgcmVjb3JkZXIgd2ls
bCBpbnNlcnQgYSAiYmVnaW4iIGFuZCAiZW5kIiBtYXJrZXJzIGJlZm9yZQorICAgICAgICBhbmQg
YWZ0ZXIgdGhlIGNsaXBwaW5nIGNvbW1hbmRzLiAKKworICAgICAgICBXaGVuIHJlcGxheWluZyB0
aGUgImJlZ2luIiBtYXJrLCB0aGUgcmVwbGF5ZXIgd2lsbCBjcmVhdGUgYSBtYXNrIEltYWdlQnVm
ZmVyCisgICAgICAgIGFuZCBmb3JjZSB1c2luZyBpdHMgY29udGV4dCBmb3IgdGhlIGZvbGxvd2lu
ZyBpdGVtcy4KKworICAgICAgICBXaGVuIHJlcGxheWluZyB0aGUgImVuZCIgbWFyaywgaXQgd2ls
bCBjbGlwIHRoZSBvcmlnaW5hbCBjb250ZXh0IHRvIHRoZQorICAgICAgICBtYXNrIEltYWdlQnVm
ZmVyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6YXBw
ZW5kKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFu
ZGxlOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6
ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6c2Fm
ZUNvcHkgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1UeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpz
aXplT2ZJdGVtSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNEcmF3
aW5nSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6aXNJbmxpbmVJdGVtKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
VHlwZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpvcGVyYXRvcjw8
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6QmVnaW5DbGlwVG9EcmF3aW5nQ29t
bWFuZHM6OmNvbG9yU3BhY2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6OmRl
c3RpbmF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9E
cmF3aW5nQ29tbWFuZHM6OkNsaXBUb0RyYXdpbmdDb21tYW5kcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOjpvcGVyYXRvcj0p
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdD
b21tYW5kczo6ZGVzdGluYXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6Y29sb3JTcGFjZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzOjpkcmF3aW5nQ29tbWFuZHMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kczo6ZW5jb2RlIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxp
c3Q6OlJlY29yZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6Y29udGV4dCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaDoKKwog
MjAyMS0wMi0xOSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogSW1wbGVtZW50IEdyaWQgT3ZlcmxheSAiU2hvdyBsaW5lIG5hbWVzIiBk
cmF3aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDA5NDM2ZGZlZmQzNTY1ZTgwODBiM2E5MThjNzEzZGYzMGEwMWNi
N2EuLjMyZjA1MTFjZGQ4MmExNmE1ZDZmNzdlOGZjZmUwNTg4MTQ5MjQ3MzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjEtMDItMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBJbXBsZW1lbnQgdGhlIENsaXBUb0RyYXdp
bmdDb21tYW5kcyBpdGVtIGJ5IHVzaW5nIGJlZ2luIGFuZCBlbmQgbWFya2VycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyMjMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgRGlzcGxh
eUxpc3QgaXRlbSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMgYnkgdGhlIHBhaXIgaXRlbXMKKyAgICAg
ICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHMgYW5kIEVuZENsaXBUb0RyYXdpbmdDb21tYW5k
cy4KKworICAgICAgICAqIEdQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmQ6OmRlY29kZUl0
ZW0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVy
UHJveHkuaDoKKwogMjAyMS0wMi0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggc29tZSBpbnRlcm5hbCBidWlsZHMgYWZ0
ZXIgcjI3MzE4NApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZTA3OWY3MzBiZTg1OWFj
M2IwNWI5NDI5YzMwZTgzNjFkMTQzYWViNC4uZTY0Mzc4NjM4NDMwODg0ODc0Y2YwZDRlYzYyNTI3
OGY4NTFjMDg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC0yMzMsMTAgKzIzMywx
MCBAQCB2b2lkIERpc3BsYXlMaXN0OjphcHBlbmQoSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBy
ZXR1cm4gYXBwZW5kPENsaXBPdXRUb1BhdGg+KGl0ZW0uZ2V0PENsaXBPdXRUb1BhdGg+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gYXBwZW5kPENsaXBQ
YXRoPihpdGVtLmdldDxDbGlwUGF0aD4oKSk7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm47IC8vIEZJWE1FOiBTdXBwb3J0IHRoZSBhYmlsaXR5IHRvIGNsb25lIGRpc3BsYXkgbGlz
dHMgKHRoaXMgaXMgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgZGlzcGxheSBsaXN0IHRyYWNraW5n
KS4KLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM6
CisgICAgICAgIHJldHVybiBhcHBlbmQ8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+KGl0ZW0u
Z2V0PEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpF
bmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBhcHBlbmQ8RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzPihpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwog
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlwaHM6CiAgICAgICAgIHJldHVybiBhcHBlbmQ8RHJh
d0dseXBocz4oaXRlbS5nZXQ8RHJhd0dseXBocz4oKSk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d0ltYWdlQnVmZmVyOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNw
cAppbmRleCAzOTVmZTY3MWNjZjc0MjJhMTY1Njc2Yzc5Y2QxZTA5ZWY1NTlhOTRkLi4wZjgxMTRi
ODFkZGM1YWFiYzE3ZDViMTU0ZThkOTdjNzM1N2QxMjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtMTMyLDggKzEzMiwxMiBAQCB2b2lkIEl0ZW1I
YW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgZ2V0PENsaXBQ
YXRoPigpLmFwcGx5KGNvbnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczogewotICAgICAgICBnZXQ8Q2xpcFRvRHJh
d2luZ0NvbW1hbmRzPigpLmFwcGx5KGNvbnRleHQpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2lu
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdp
bmdDb21tYW5kczogeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhzOgpAQCAtMjk4LDEwICsz
MDIsNiBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAgICBnZXQ8Q2xpcFBhdGg+
KCkufkNsaXBQYXRoKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0gICAgICAgIGdldDxDbGlwVG9EcmF3aW5nQ29t
bWFuZHM+KCkufkNsaXBUb0RyYXdpbmdDb21tYW5kcygpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7CiAgICAgICAgIGdldDxE
cmF3Rm9jdXNSaW5nUGF0aD4oKS5+RHJhd0ZvY3VzUmluZ1BhdGgoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzc2LDYgKzM3NiwxMCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5DbGlwVG9E
cmF3aW5nQ29tbWFuZHM6IHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxs
eV9kZXN0cnVjdGlibGU8QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lM
YXllcjogewogICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlhbGx5X2Rlc3RydWN0
aWJsZTxCZWdpblRyYW5zcGFyZW5jeUxheWVyPjo6dmFsdWUpOwogICAgICAgICByZXR1cm47CkBA
IC00MzIsNiArNDM2LDEwIEBAIHZvaWQgSXRlbUhhbmRsZTo6ZGVzdHJveSgpCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoc3RkOjppc190cml2aWFsbHlfZGVzdHJ1Y3RpYmxlPERyYXdSZWN0Pjo6dmFs
dWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBU
b0RyYXdpbmdDb21tYW5kczogeworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfdHJpdmlh
bGx5X2Rlc3RydWN0aWJsZTxFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM+Ojp2YWx1ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5
ZXI6IHsKICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGli
bGU8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+Ojp2YWx1ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU2
Niw4ICs1NzQsNiBAQCBib29sIEl0ZW1IYW5kbGU6OnNhZmVDb3B5KEl0ZW1IYW5kbGUgZGVzdGlu
YXRpb24pIGNvbnN0CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0VG9QYXRoPigqdGhp
cywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAgICAgICAgIHJl
dHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENs
aXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3Vz
UmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUmVjdHM6CkBAIC02MTIsNiArNjE4LDggQEAgYm9vbCBJdGVtSGFuZGxlOjpzYWZlQ29w
eShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdAogICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5
U3Ryb2tlUGF0dGVybjoKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5U3Ryb2tlUGF0dGVy
bj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogI2VuZGlmCisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5D
bGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpbkNsaXBU
b0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogICAgIGNhc2UgSXRlbVR5cGU6
OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxCZWdpblRy
YW5zcGFyZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6
Q2xlYXJSZWN0OgpAQCAtNjM0LDYgKzY0Miw4IEBAIGJvb2wgSXRlbUhhbmRsZTo6c2FmZUNvcHko
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKICAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6
CiAgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3UmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQp
OwogICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOgogICAgICAgICByZXR1
cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICAg
ICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1UeXBlLmNwcAppbmRleCBjMGM3M2I4M2JkNTJlYWEwNGE5NTE3ODE4MDQ0NTM5NDdiYmM5
NWU5Li41NjkyNTAwNjUxYWEyYmFkNGU4OTFkODk3NDAyYjFhZDMwYjYwYjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuY3BwCkBAIC03OCw4ICs3OCwxMCBAQCBzdGF0
aWMgc2l6ZV90IHNpemVPZkl0ZW1JbkJ5dGVzKEl0ZW1UeXBlIHR5cGUpCiAgICAgICAgIHJldHVy
biBzaXplb2YoQ2xpcE91dFRvUGF0aCk7CiAgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CiAg
ICAgICAgIHJldHVybiBzaXplb2YoQ2xpcFBhdGgpOwotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBU
b0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgcmV0dXJuIHNpemVvZihDbGlwVG9EcmF3aW5nQ29t
bWFuZHMpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgor
ICAgICAgICByZXR1cm4gc2l6ZW9mKEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBz
aXplb2YoRW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKTsKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
R2x5cGhzOgogICAgICAgICByZXR1cm4gc2l6ZW9mKERyYXdHbHlwaHMpOwogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKQEAgLTE3OSw3ICsxODEsOCBAQCBib29sIGlzRHJhd2lu
Z0l0ZW0oSXRlbVR5cGUgdHlwZSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9JbWFnZUJ1ZmZl
cjoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRoOgogICAgIGNhc2UgSXRlbVR5cGU6
OkNsaXBQYXRoOgotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CiAgICAgY2FzZSBJdGVtVHlwZTo6Q29u
Y2F0ZW5hdGVDVE06CiAgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgogICAgIGNhc2Ug
SXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjoKQEAgLTI1
MSw3ICsyNTQsNiBAQCBib29sIGlzSW5saW5lSXRlbShJdGVtVHlwZSB0eXBlKQogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6CiAgICAgY2FzZSBJ
dGVtVHlwZTo6Q2xpcFBhdGg6Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1h
bmRzOgogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgogICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0czoKICAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgpAQCAtMjc5LDYgKzI4MSw4IEBAIGJvb2wgaXNJbmxpbmVJdGVtKEl0ZW1UeXBlIHR5cGUpCiAg
ICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0OgogICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgorICAgIGNhc2UgSXRlbVR5cGU6OkJl
Z2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgIGNhc2UgSXRlbVR5cGU6OkVuZENsaXBUb0Ry
YXdpbmdDb21tYW5kczoKICAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKICAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgogICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdFbGxpcHNlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1UeXBlLmgKaW5k
ZXggMGU5NDdhMDZkYWI1YTJkZmI0NzY5MDgyZjhjYWM1NDhhZjg5MzQzYi4uY2Q2YzFhNDk5Yzk4
MjE2ZTEyNjU4MGMzZTNjYzRhM2Q4YzI2OTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbVR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtVHlwZS5oCkBAIC01MSw3ICs1MSw4IEBAIGVudW0gY2xhc3MgSXRlbVR5cGUgOiB1aW50
OF90IHsKICAgICBDbGlwVG9JbWFnZUJ1ZmZlciwKICAgICBDbGlwT3V0VG9QYXRoLAogICAgIENs
aXBQYXRoLAotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kcywKKyAgICBCZWdpbkNsaXBUb0RyYXdp
bmdDb21tYW5kcywKKyAgICBFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCiAgICAgRHJhd0dseXBo
cywKICAgICBEcmF3SW1hZ2VCdWZmZXIsCiAgICAgRHJhd05hdGl2ZUltYWdlLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IGU1MWFjMTM5ZDJhZjQwMTQ5NmNlZDIwOTUz
ZmVmYmUzNThlZTU3NGEuLjYyOGZjNWMwNTU5NTIyMmRiMmQ3MzY4ODg4YmVkYjc2NWUzMTQ4MTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTM0NywxOCArMzQ3LDE2
IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBD
bGlwUGF0aCYgaXRlbSkKICAgICByZXR1cm4gdHM7CiB9CiAKLXZvaWQgQ2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CitzdGF0aWMgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQmVnaW5DbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGl0ZW0pCiB7Ci0gICAgY29udGV4dC5jbGlwVG9EcmF3aW5nQ29tbWFuZHMo
bV9kZXN0aW5hdGlvbiwgbV9jb2xvclNwYWNlLCBbJl0gKEdyYXBoaWNzQ29udGV4dCYgY2xpcHBp
bmdDb250ZXh0KSB7Ci0gICAgICAgIFJlcGxheWVyIHJlcGxheWVyIHsgY2xpcHBpbmdDb250ZXh0
LCBtX2RyYXdpbmdDb21tYW5kcyB9OwotICAgICAgICByZXBsYXllci5yZXBsYXkoKTsKLSAgICB9
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImRlc3RpbmF0aW9uIiwgaXRlbS5kZXN0aW5hdGlvbigp
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbG9yLXNwYWNlIiwgaXRlbS5jb2xvclNwYWNlKCkp
OworICAgIHJldHVybiB0czsKIH0KIAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIGNvbnN0IENsaXBUb0RyYXdpbmdDb21tYW5kcyYgaXRlbSkKK3N0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBFbmRDbGlwVG9EcmF3
aW5nQ29tbWFuZHMmIGl0ZW0pCiB7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJkZXN0aW5hdGlvbiIs
IGl0ZW0uZGVzdGluYXRpb24oKSk7Ci0gICAgdHMuZHVtcFByb3BlcnR5KCJjb2xvci1zcGFjZSIs
IGl0ZW0uY29sb3JTcGFjZSgpKTsKICAgICByZXR1cm4gdHM7CiB9CiAKQEAgLTEwMzUsNyArMTAz
Myw4IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBJdGVt
VHlwZSB0eXBlKQogICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB0cyA8PCAi
Y2xpcC10by1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
VG9QYXRoOiB0cyA8PCAiY2xpcC1vdXQtdG8tcGF0aCI7IGJyZWFrOwogICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBQYXRoOiB0cyA8PCAiY2xpcC1wYXRoIjsgYnJlYWs7Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB0cyA8PCAiY2xpcC10by1pbWFnZS1idWZmZXIiOyBi
cmVhazsKKyAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kczogdHMg
PDwgImJlZ2luLWNsaXAtdG8tZHJhd2luZy1jb21tYW5kczoiOyBicmVhazsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM6IHRzIDw8ICJlbmQtY2xpcC10by1kcmF3
aW5nLWNvbW1hbmRzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczogdHMg
PDwgImRyYXctZ2x5cGhzIjsgYnJlYWs7CiAgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVm
ZmVyOiB0cyA8PCAiZHJhdy1pbWFnZS1idWZmZXIiOyBicmVhazsKICAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3TmF0aXZlSW1hZ2U6IHRzIDw8ICJkcmF3LW5hdGl2ZS1pbWFnZSI7IGJyZWFrOwpAQCAt
MTE0Niw4ICsxMTQ1LDExIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IEl0ZW1IYW5kbGUgaXRlbSkKICAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAg
dHMgPDwgaXRlbS5nZXQ8Q2xpcFBhdGg+KCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAgICAgICAgdHMgPDwgaXRlbS5nZXQ8Q2xp
cFRvRHJhd2luZ0NvbW1hbmRzPigpOworICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJh
d2luZ0NvbW1hbmRzOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdD
b21tYW5kcz4oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJdGVtVHlwZTo6RW5kQ2xpcFRv
RHJhd2luZ0NvbW1hbmRzOgorICAgICAgICB0cyA8PCBpdGVtLmdldDxFbmRDbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdHbHlw
aHM6CiAgICAgICAgIHRzIDw8IGl0ZW0uZ2V0PERyYXdHbHlwaHM+KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA0NjI4NjU0MmEzOWQ5OGJlYWEwN2E4MjBmMTYwNzQ3NDdk
MDBjNjNhLi45ODZjNzQ1ZDAzN2MzYjNlNzg4NTc1M2RkZmU0OTIwMGNjNmU3MDIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTg5Myw3NCArODkzLDQyIEBAIE9wdGlvbmFs
PENsaXBQYXRoPiBDbGlwUGF0aDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKnBhdGgpLCAqd2luZFJ1bGUgfX07CiB9CiAKLWNsYXNzIENsaXBUb0RyYXdp
bmdDb21tYW5kcyB7CitjbGFzcyBCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcyB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpDbGlw
VG9EcmF3aW5nQ29tbWFuZHM7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRl
bSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgSXRlbVR5cGUgaXRlbVR5cGUgPSBJdGVt
VHlwZTo6QmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFuZHM7CisgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIENsaXBUb0RyYXdpbmdDb21tYW5kcyhjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSwgRGlz
cGxheUxpc3QmJiBkcmF3aW5nQ29tbWFuZHMpCisgICAgQmVnaW5DbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgRGVzdGluYXRpb25Db2xvclNwYWNlIGNv
bG9yU3BhY2UpCiAgICAgICAgIDogbV9kZXN0aW5hdGlvbihkZXN0aW5hdGlvbikKICAgICAgICAg
LCBtX2NvbG9yU3BhY2UoY29sb3JTcGFjZSkKLSAgICAgICAgLCBtX2RyYXdpbmdDb21tYW5kcyhX
VEZNb3ZlKGRyYXdpbmdDb21tYW5kcykpCi0gICAgewotICAgIH0KLQotICAgIENsaXBUb0RyYXdp
bmdDb21tYW5kcyhjb25zdCBDbGlwVG9EcmF3aW5nQ29tbWFuZHMmIG90aGVyKQotICAgICAgICA6
IG1fZGVzdGluYXRpb24ob3RoZXIubV9kZXN0aW5hdGlvbikKLSAgICAgICAgLCBtX2NvbG9yU3Bh
Y2Uob3RoZXIubV9jb2xvclNwYWNlKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6IENvcHkgbV9k
cmF3aW5nQ29tbWFuZHMuCi0gICAgfQotCi0gICAgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBvcGVy
YXRvcj0oY29uc3QgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzJiBvdGhlcikKICAgICB7Ci0gICAgICAg
IG1fZGVzdGluYXRpb24gPSBvdGhlci5tX2Rlc3RpbmF0aW9uOwotICAgICAgICBtX2NvbG9yU3Bh
Y2UgPSBvdGhlci5tX2NvbG9yU3BhY2U7Ci0gICAgICAgIC8vIEZJWE1FOiBDb3B5IG1fZHJhd2lu
Z0NvbW1hbmRzLgotICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCiAgICAgY29uc3QgRmxv
YXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KICAg
ICBEZXN0aW5hdGlvbkNvbG9yU3BhY2UgY29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3JTcGFjZTsgfQotICAgIGNvbnN0IERpc3BsYXlMaXN0JiBkcmF3aW5nQ29tbWFuZHMoKSBjb25z
dCB7IHJldHVybiBtX2RyYXdpbmdDb21tYW5kczsgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBPcHRpb25hbDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+IGRlY29kZShEZWNv
ZGVyJik7Ci0KLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwogICAgIERlc3RpbmF0aW9uQ29sb3JT
cGFjZSBtX2NvbG9yU3BhY2U7Ci0gICAgRGlzcGxheUxpc3QgbV9kcmF3aW5nQ29tbWFuZHM7CiB9
OwogCi10ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBDbGlwVG9EcmF3aW5nQ29tbWFuZHM6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgbV9kZXN0
aW5hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fY29sb3JTcGFjZTsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGEgd2F5IHRvIGVuY29kZSBpbi1tZW1vcnkgZGlzcGxheSBsaXN0cy4KLX0KK2NsYXNz
IEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcyB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhw
ciBJdGVtVHlwZSBpdGVtVHlwZSA9IEl0ZW1UeXBlOjpFbmRDbGlwVG9EcmF3aW5nQ29tbWFuZHM7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotdGVtcGxhdGU8Y2xh
c3MgRGVjb2Rlcj4KLU9wdGlvbmFsPENsaXBUb0RyYXdpbmdDb21tYW5kcz4gQ2xpcFRvRHJhd2lu
Z0NvbW1hbmRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKLXsKLSAgICBPcHRpb25hbDxGbG9h
dFJlY3Q+IGRlc3RpbmF0aW9uOwotICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb247Ci0gICAgaWYg
KCFkZXN0aW5hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBFbmRDbGlw
VG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbikKKyAgICAgICAg
OiBtX2Rlc3RpbmF0aW9uKGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICB9CiAKLSAgICBPcHRpb25h
bDxEZXN0aW5hdGlvbkNvbG9yU3BhY2U+IGNvbG9yU3BhY2U7Ci0gICAgZGVjb2RlciA+PiBjb2xv
clNwYWNlOwotICAgIGlmICghY29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvbjsgfQogCi0gICAgLy8gRklYTUU6IEltcGxlbWVudCBhIHdheSB0byBkZWNvZGUg
aW4tbWVtb3J5IGRpc3BsYXkgbGlzdHMuCi0gICAgRGlzcGxheUxpc3QgZHJhd2luZ0NvbW1hbmRz
OwotICAgIHJldHVybiB7eyAqZGVzdGluYXRpb24sICpjb2xvclNwYWNlLCBXVEZNb3ZlKGRyYXdp
bmdDb21tYW5kcykgfX07Ci19Citwcml2YXRlOgorICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9u
OworfTsKIAogY2xhc3MgRHJhd0dseXBocyB7CiBwdWJsaWM6CkBAIC0yMzQ1LDcgKzIzMTMsOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZT4gewogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VC
dWZmZXIsCiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
LAogICAgIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q2xpcFBhdGgsCi0gICAgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHMsCisgICAg
V2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5k
cywKKyAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkVuZENsaXBUb0RyYXdpbmdD
b21tYW5kcywKICAgICBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkRyYXdHbHlwaHMs
CiAgICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXIsCiAg
ICAgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1hZ2UsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggZTdmOWUyOGMzNTAyMTll
ODEzZDg4MzQwZmY0ZjU0ZGUyMmZjMTBjMy4uYmE1MDhlY2YzOWI0MWNiNmQwNTc1NzYyMTRhYjRk
NDU3Mjc4NDNhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApA
QCAtNDM5LDE5ICs0MzksOSBAQCB2b2lkIFJlY29yZGVyOjpjbGlwVG9JbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdAogCiB2b2lkIFJlY29y
ZGVyOjpjbGlwVG9EcmF3aW5nQ29tbWFuZHMoY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
RGVzdGluYXRpb25Db2xvclNwYWNlIGNvbG9yU3BhY2UsIEZ1bmN0aW9uPHZvaWQoR3JhcGhpY3ND
b250ZXh0Jik+JiYgZHJhd2luZ0Z1bmN0aW9uKQogewotICAgIC8vIFRoZSBpbml0aWFsIENUTSBt
YXRjaGVzIEltYWdlQnVmZmVyJ3MgaW5pdGlhbCBDVE0uCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRy
YW5zZm9ybSA9IGdldENUTShHcmFwaGljc0NvbnRleHQ6OkRlZmluaXRlbHlJbmNsdWRlRGV2aWNl
U2NhbGUpOwotICAgIEZsb2F0U2l6ZSBzY2FsZUZhY3Rvcih0cmFuc2Zvcm0ueFNjYWxlKCksIHRy
YW5zZm9ybS55U2NhbGUoKSk7Ci0gICAgYXV0byBzY2FsZWRTaXplID0gZXhwYW5kZWRJbnRTaXpl
KGRlc3RpbmF0aW9uLnNpemUoKSAqIHNjYWxlRmFjdG9yKTsKLQotICAgIEFmZmluZVRyYW5zZm9y
bSBpbml0aWFsQ1RNOwotICAgIGluaXRpYWxDVE0uc2NhbGUoMSwgLTEpOwotICAgIGluaXRpYWxD
VE0udHJhbnNsYXRlKDAsIC1zY2FsZWRTaXplLmhlaWdodCgpKTsKLSAgICBpbml0aWFsQ1RNLnNj
YWxlKHNjYWxlZFNpemUgLyBkZXN0aW5hdGlvbi5zaXplKCkpOwotCi0gICAgYXV0byByZWNvcmRp
bmdDb250ZXh0ID0gbWFrZVVuaXF1ZTxEcmF3aW5nQ29udGV4dD4oZGVzdGluYXRpb24uc2l6ZSgp
LCBpbml0aWFsQ1RNKTsKLSAgICBkcmF3aW5nRnVuY3Rpb24ocmVjb3JkaW5nQ29udGV4dC0+Y29u
dGV4dCgpKTsKLSAgICBhcHBlbmQ8Q2xpcFRvRHJhd2luZ0NvbW1hbmRzPihkZXN0aW5hdGlvbiwg
Y29sb3JTcGFjZSwgcmVjb3JkaW5nQ29udGV4dC0+dGFrZURpc3BsYXlMaXN0KCkpOworICAgIGFw
cGVuZDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24sIGNvbG9yU3BhY2Up
OworICAgIGRyYXdpbmdGdW5jdGlvbihncmFwaGljc0NvbnRleHQoKSk7CisgICAgYXBwZW5kPEVu
ZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oZGVzdGluYXRpb24pOwogfQogCiBib29sIFJlY29yZGVy
OjpjYW5QYWludEZyYW1lRm9yTWVkaWEoY29uc3QgTWVkaWFQbGF5ZXImIHBsYXllcikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCA0ZDkwNmEyNDU2
NDQ2MmY2ZTAxODE2OWQxYjE2ODk5MmQ4ZGYyY2NhLi5kMTczN2EyNzljMzk3ZTA5MDkzZDEzODQz
M2RiMzg0N2Q2ZjQ3NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCkBAIC00Niw2ICs0NiwxMSBAQCBSZXBsYXllcjo6UmVwbGF5ZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBEaXNwbGF5TGlzdCYgZGlzcGxheUxpc3QsIGNvbgogCiBSZXBsYXll
cjo6flJlcGxheWVyKCkgPSBkZWZhdWx0OwogCitHcmFwaGljc0NvbnRleHQmIFJlcGxheWVyOjpj
b250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tYXNrSW1hZ2VCdWZmZXIgPyBtX21hc2tJ
bWFnZUJ1ZmZlci0+Y29udGV4dCgpIDogbV9jb250ZXh0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBU
PgogaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFw
cGx5SW1hZ2VCdWZmZXJJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW1hZ2VC
dWZmZXJIYXNoTWFwJiBpbWFnZUJ1ZmZlcnMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKQEAgLTEwNyw0
NiArMTEyLDY1IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4CiAKIHN0ZDo6cGFpcjxPcHRpb25h
bDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
Pj4gUmVwbGF5ZXI6OmFwcGx5SXRlbShJdGVtSGFuZGxlIGl0ZW0pCiB7Ci0gICAgaWYgKG1fZGVs
ZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+YXBwbHkoaXRlbSwgbV9jb250ZXh0KSkKKyAgICBpZiAobV9k
ZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5hcHBseShpdGVtLCBjb250ZXh0KCkpKQogICAgICAgICBy
ZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNv
dXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxEcmF3SW1hZ2VCdWZmZXI+KG1f
Y29udGV4dCwgbV9pbWFnZUJ1ZmZlcnMsIGl0ZW0pKQorICAgICAgICBpZiAoYXV0byBtaXNzaW5n
Q2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlJbWFnZUJ1ZmZlckl0ZW08RHJhd0ltYWdl
QnVmZmVyPihjb250ZXh0KCksIG1faW1hZ2VCdWZmZXJzLCBpdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZSht
aXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPENsaXBU
b0ltYWdlQnVmZmVyPigpKSB7Ci0gICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJj
ZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFnZUJ1ZmZlcj4obV9j
b250ZXh0LCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseUltYWdlQnVmZmVySXRlbTxDbGlwVG9JbWFn
ZUJ1ZmZlcj4oY29udGV4dCgpLCBtX2ltYWdlQnVmZmVycywgaXRlbSkpCiAgICAgICAgICAgICBy
ZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUo
bWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKICAgICAgICAgcmV0dXJuIHsgV1RG
OjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKICAgICBpZiAoaXRlbS5pczxEcmF3
TmF0aXZlSW1hZ2U+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdOYXRpdmVJbWFnZT4obV9jb250
ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRlbSkpCisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNo
ZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseU5hdGl2ZUltYWdlSXRlbTxEcmF3TmF0aXZlSW1h
Z2U+KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3Np
bmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVs
bG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8RHJhd0dseXBo
cz4oKSkgewotICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVy
ID0gYXBwbHlGb250SXRlbTxEcmF3R2x5cGhzPihtX2NvbnRleHQsIG1fZm9udHMsIGl0ZW0pKQor
ICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlG
b250SXRlbTxEcmF3R2x5cGhzPihjb250ZXh0KCksIG1fZm9udHMsIGl0ZW0pKQogICAgICAgICAg
ICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZN
b3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCiAgICAgaWYgKGl0ZW0uaXM8
RHJhd1BhdHRlcm4+KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNl
SWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihtX2NvbnRleHQs
IG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJl
c291cmNlSWRlbnRpZmllciA9IGFwcGx5TmF0aXZlSW1hZ2VJdGVtPERyYXdQYXR0ZXJuPihjb250
ZXh0KCksIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKICAgICAgICAgICAgIHJldHVybiB7IFN0b3BS
ZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyKSB9OwogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCB9OwogICAgIH0KIAogICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNl
dFN0YXRlSXRlbShtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgaWYg
KGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVt
KGNvbnRleHQoKSwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQogICAgICAgICAgICAgcmV0dXJuIHsg
U3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdD
YWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9w
dCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCi0gICAgaXRlbS5hcHBseShtX2NvbnRleHQpOwor
ICAgIGlmIChpdGVtLmlzPEJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzPigpKSB7CisgICAgICAg
IGlmIChtX21hc2tJbWFnZUJ1ZmZlcikKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBsYXlS
ZWFzb246OkludmFsaWRJdGVtLCBXVEY6Om51bGxvcHQgfTsKKyAgICAgICAgYXV0byYgY2xpcEl0
ZW0gPSBpdGVtLmdldDxCZWdpbkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKKyAgICAgICAgbV9t
YXNrSW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihjbGlw
SXRlbS5kZXN0aW5hdGlvbigpLnNpemUoKSwgY2xpcEl0ZW0uY29sb3JTcGFjZSgpLCBtX2NvbnRl
eHQpOworICAgICAgICBpZiAoIW1fbWFza0ltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJu
IHsgU3RvcFJlcGxheVJlYXNvbjo6T3V0T2ZNZW1vcnksIFdURjo6bnVsbG9wdCB9OworICAgICAg
ICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0KKworICAgIGlm
IChpdGVtLmlzPEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSkgeworICAgICAgICBpZiAoIW1f
bWFza0ltYWdlQnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6
SW52YWxpZEl0ZW0sIFdURjo6bnVsbG9wdCB9OworICAgICAgICBhdXRvJiBjbGlwSXRlbSA9IGl0
ZW0uZ2V0PEVuZENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKTsKKyAgICAgICAgbV9jb250ZXh0LmNs
aXBUb0ltYWdlQnVmZmVyKCptX21hc2tJbWFnZUJ1ZmZlciwgY2xpcEl0ZW0uZGVzdGluYXRpb24o
KSk7CisgICAgICAgIG1fbWFza0ltYWdlQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJu
IHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKKyAgICBpdGVtLmFwcGx5
KGNvbnRleHQoKSk7CiAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmgKaW5kZXggZDJkZTBiNmZl
NWU4YTFkMGM2YmYxZTkxMWM2NjcyZmQ0YWI2NmFkNC4uMTgxYTEyYjBlNTE4ZThkYzIxZDNiNzQ5
ZjI3MTAxZDJhM2U5NmYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5o
CkBAIC00Miw3ICs0Miw4IEBAIGVudW0gY2xhc3MgU3RvcFJlcGxheVJlYXNvbiA6IHVpbnQ4X3Qg
ewogICAgIFJlcGxheWVkQWxsSXRlbXMsCiAgICAgTWlzc2luZ0NhY2hlZFJlc291cmNlLAogICAg
IENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIsCi0gICAgSW52YWxpZEl0ZW0KKyAgICBJbnZh
bGlkSXRlbSwKKyAgICBPdXRPZk1lbW9yeQogfTsKIAogc3RydWN0IFJlcGxheVJlc3VsdCB7CkBA
IC02OSw5ICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgfTsKICAgICAKIHByaXZhdGU6CisgICAgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0KCkgY29uc3Q7CiAgICAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0
b3BSZXBsYXlSZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBh
cHBseUl0ZW0oSXRlbUhhbmRsZSk7CiAKICAgICBHcmFwaGljc0NvbnRleHQmIG1fY29udGV4dDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2VCdWZmZXI+IG1fbWFza0ltYWdlQnVmZmVyOwogICAg
IGNvbnN0IERpc3BsYXlMaXN0JiBtX2Rpc3BsYXlMaXN0OwogICAgIGNvbnN0IEltYWdlQnVmZmVy
SGFzaE1hcCYgbV9pbWFnZUJ1ZmZlcnM7CiAgICAgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBt
X25hdGl2ZUltYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFw
aGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCBiM2ViNmI2OTZhOTM0
OTkzNzcyMjNkNzkyOGY5YTBkMjk5NjE3ZjJhLi4xMzcyYzQzYTg0M2JlZjQ0YzIxZWZlYzU4NGM5
ZDBiNWE5OWQ3N2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMDEsNiArMjAxLDcg
QEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGlu
YXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKIAogICAgICAgICBhdXRvIHJlc3VsdCA9IHN1Ym1p
dCgqZGlzcGxheUxpc3QsICpkZXN0aW5hdGlvbik7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lU
SF9SRVRVUk5fVkFMVUUocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nICE9IERpc3BsYXlMaXN0OjpT
dG9wUmVwbGF5UmVhc29uOjpJbnZhbGlkSXRlbSwgbnVsbHB0ciwgIkRldGVjdGVkIGludmFsaWQg
ZGlzcGxheSBsaXN0IGl0ZW0iKTsKKyAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9W
QUxVRShyZXN1bHQucmVhc29uRm9yU3RvcHBpbmcgIT0gRGlzcGxheUxpc3Q6OlN0b3BSZXBsYXlS
ZWFzb246Ok91dE9mTWVtb3J5LCBudWxscHRyLCAiQ291bmQgbm90IGFsbG9jYXRlIG1lbW9yeSIp
OwogCiAgICAgICAgIGF1dG8gYWR2YW5jZVJlc3VsdCA9IGhhbmRsZS5hZHZhbmNlKHJlc3VsdC5u
dW1iZXJPZkJ5dGVzUmVhZCk7CiAgICAgICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFM
VUUoYWR2YW5jZVJlc3VsdCwgbnVsbHB0ciwgIkZhaWxlZCB0byBhZHZhbmNlIGRpc3BsYXkgbGlz
dCByZWFkZXIgaGFuZGxlIik7CkBAIC00MDYsOCArNDA3LDYgQEAgT3B0aW9uYWw8RGlzcGxheUxp
c3Q6Okl0ZW1IYW5kbGU+IFdBUk5fVU5VU0VEX1JFVFVSTiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpkZWMKICAgICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcE91
dFRvUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7CiAgICAgY2FzZSBEaXNwbGF5
TGlzdDo6SXRlbVR5cGU6OkNsaXBQYXRoOgogICAgICAgICByZXR1cm4gZGVjb2RlQW5kQ3JlYXRl
PERpc3BsYXlMaXN0OjpDbGlwUGF0aD4oZGF0YSwgbGVuZ3RoLCBoYW5kbGVMb2NhdGlvbik7Ci0g
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKLSAg
ICAgICAgcmV0dXJuIGRlY29kZUFuZENyZWF0ZTxEaXNwbGF5TGlzdDo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzPihkYXRhLCBsZW5ndGgsIGhhbmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlM
aXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6CiAgICAgICAgIHJldHVybiBkZWNvZGVB
bmRDcmVhdGU8RGlzcGxheUxpc3Q6OkRyYXdGb2N1c1JpbmdQYXRoPihkYXRhLCBsZW5ndGgsIGhh
bmRsZUxvY2F0aW9uKTsKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0ZvY3Vz
UmluZ1JlY3RzOgpAQCAtNDQ5LDYgKzQ0OCw4IEBAIE9wdGlvbmFsPERpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlPiBXQVJOX1VOVVNFRF9SRVRVUk4gUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6ZGVjCiAg
ICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNsaXA6CiAgICAgY2FzZSBEaXNwbGF5TGlz
dDo6SXRlbVR5cGU6OkNsaXBPdXQ6CiAgICAgY2FzZSBEaXNwbGF5TGlzdDo6SXRlbVR5cGU6OkNs
aXBUb0ltYWdlQnVmZmVyOgorICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpCZWdpbkNs
aXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5k
Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAgIGNhc2UgRGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpD
b25jYXRlbmF0ZUNUTToKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjoKICAgICBjYXNlIERpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RHJhd0Vs
bGlwc2U6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
Z3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCmluZGV4IDBjYTJiYjIwM2U0Yzc0Mjdi
NTQ0ZTZlM2E3NDNkNmMxODA1MzkyYjAuLjI3MzM0NGM2MzdmMmM1Nzc1ZGUzNDAyNzU0MzdiZTUy
N2Y3MTQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0yODAsOCArMjgwLDYg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuIElQQzo6RW5jb2Rlcjo6ZW5jb2RlU2lu
Z2xlT2JqZWN0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwT3V0VG9QYXRoPihpdGVtLmdldDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6Q2xpcE91dFRvUGF0aD4oKSk7CiAgICAgICAgIGNhc2UgV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwUGF0aDoKICAgICAgICAgICAgIHJldHVy
biBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
Q2xpcFBhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpDbGlwUGF0aD4oKSk7Ci0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6Ci0gICAgICAgICAgICByZXR1cm4gSVBDOjpFbmNvZGVyOjplbmNvZGVTaW5nbGVP
YmplY3Q8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oaXRlbS5n
ZXQ8V2ViQ29yZTo6RGlzcGxheUxpc3Q6OkNsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7CiAgICAg
ICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0
aDoKICAgICAgICAgICAgIHJldHVybiBJUEM6OkVuY29kZXI6OmVuY29kZVNpbmdsZU9iamVjdDxX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ZvY3VzUmluZ1BhdGg+KGl0ZW0uZ2V0PFdlYkNvcmU6
OkRpc3BsYXlMaXN0OjpEcmF3Rm9jdXNSaW5nUGF0aD4oKSk7CiAgICAgICAgIGNhc2UgV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6CkBAIC0zMjMsNiAr
MzIxLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJ
dGVtVHlwZTo6Q2xpcDoKICAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbVR5
cGU6OkNsaXBPdXQ6CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBl
OjpDbGlwVG9JbWFnZUJ1ZmZlcjoKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
SXRlbVR5cGU6OkJlZ2luQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgorICAgICAgICBjYXNlIFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6RW5kQ2xpcFRvRHJhd2luZ0NvbW1hbmRzOgogICAg
ICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtVHlwZTo6Q29uY2F0ZW5hdGVDVE06
CiAgICAgICAgIGNhc2UgV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1UeXBlOjpEcmF3RG90c0Zv
ckRvY3VtZW50TWFya2VyOgogICAgICAgICBjYXNlIFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
VHlwZTo6RHJhd0VsbGlwc2U6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjM5YjMzZmU3NzgwODRhYjA4YjIxM2M1YjViOTcy
M2RjMzA5ZTAzZi4uODgxYmE1ZDcyZjIyODkzYzgyMWE0NTg3ZTVmNzNmNDE5MmRjY2FhMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAyLTIwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IHRoZSBDbGlwVG9E
cmF3aW5nQ29tbWFuZHMgaXRlbSBieSB1c2luZyBiZWdpbiBhbmQgZW5kIG1hcmtlcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjIzMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXh0IHdpdGgg
Z3JhZGllbnQgdGVzdHMgd2lsbCBiZSBmaXhlZCBieSB0aGlzIGNoYW5nZS4KKworICAgICAgICAq
IGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjEtMDItMTkgIFJvYmVydCBKZW5u
ZXIgIDxqZW5uZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1MgV2sgMiBdIGluc3BlY3Rv
ci9kZWJ1Z2dlci9hc3luYy1zdGFjay10cmFjZS1iYXNpYy5odG1sIGlzIGZsYWtleSB0aW1pbmcg
b3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmNTBmZGFk
NmY5ZjdlNzE2NThmYjdjMzIzMGE1OGQ5NGY1MTMzYTQ3Li4wZDY5YzkwYzg4Y2ZlNDFhOTU5YzA0
ZGM3NDk3YWY4Mjg5YWQxYjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTYsNyArNiw2IEBAIGNzczMvYmxlbmRpbmcvYmxlbmQtbW9kZS1jbGlwLWFjY2Vs
ZXJhdGVkLWJsZW5kaW5nLWNhbnZhcy5odG1sIFsgRmFpbHVyZSBdCiBkaXNwbGF5bGlzdHMvY2Fu
dmFzLWRpc3BsYXktbGlzdC5odG1sIFsgRmFpbHVyZSBdCiAKICMgd2Via2l0Lm9yZy9iLzIyMDM4
OQotZmFzdC9jYW52YXMvMmQuZmlsbFRleHQuZ3JhZGllbnQuaHRtbCBbIEZhaWx1cmUgXQogZmFz
dC9jYW52YXMvY2FudmFzLWFyYy0zNjAtd2luZGluZy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Nh
bnZhcy9jYW52YXMtYXJjLWNvbm5lY3RpbmctbGluZS5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Nh
bnZhcy9jYW52YXMtYXJjLXplcm8tbGluZXRvLmh0bWwgWyBGYWlsdXJlIF0KQEAgLTUxLDE5ICs1
MCw2IEBAIGZhc3QvbWVkaWFzdHJlYW0vbWVkaWEtc3RyZWFtLXRyYWNrLWludGVycnVwdGVkLmh0
bWwgWyBGYWlsdXJlIF0KIGZhc3QvcmVwYWludC9jYW52YXMtb2JqZWN0LWZpdC5odG1sIFsgRmFp
bHVyZSBdCiBmYXN0L3JlcGFpbnQvY2FudmFzLXB1dEltYWdlRGF0YS5odG1sIFsgRmFpbHVyZSBd
CiAKLSMgd2Via2l0Lm9yZy9iLzIyMDM3NwotZmFzdC90ZXh0L2NhbnZhcy1jb2xvci1mb250cy9m
aWxsLWdyYWRpZW50LUNPTFItMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1mYXN0L3RleHQv
Y2FudmFzLWNvbG9yLWZvbnRzL3N0cm9rZS1ncmFkaWVudC1DT0xSLTIuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotZmFzdC90ZXh0L2NhbnZhcy1jb2xvci1mb250cy9zdHJva2UtZ3JhZGllbnQt
Q09MUi0zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWZhc3QvdGV4dC9jYW52YXMtY29sb3It
Zm9udHMvc3Ryb2tlLWdyYWRpZW50LUNPTFItNC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1m
YXN0L3RleHQvY2FudmFzLWNvbG9yLWZvbnRzL3N0cm9rZS1ncmFkaWVudC1DT0xSLTUuaHRtbCBb
IEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMvZmlsbC1n
cmFkaWVudC1zYml4LTIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52
YXMvY29sb3ItZm9udHMvZmlsbC1ncmFkaWVudC1zYml4LTMuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMvZmlsbC1ncmFkaWVudC1zYml4LTQu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotaHR0cC90ZXN0cy9jYW52YXMvY29sb3ItZm9udHMv
c3Ryb2tlLWdyYWRpZW50LXNiaXgtMi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCi1odHRwL3Rl
c3RzL2NhbnZhcy9jb2xvci1mb250cy9zdHJva2UtZ3JhZGllbnQtc2JpeC0zLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KLWh0dHAvdGVzdHMvY2FudmFzL2NvbG9yLWZvbnRzL3N0cm9rZS1ncmFk
aWVudC1zYml4LTQuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotCiAjIHdlYmtpdC5vcmcvYi8y
MjE2OTQKIGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjguaHRt
bCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9tZWRpYS9jbGVhcmtleS9jb2xsZWN0LXdlYmtpdC1t
ZWRpYS1zZXNzaW9uLmh0bWwgWyBDcmFzaCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>