<?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>77610</bug_id>
          
          <creation_ts>2012-02-01 23:23:25 -0800</creation_ts>
          <short_desc>Introduces BuiltinShadowRoot and methods.</short_desc>
          <delta_ts>2012-02-08 09:19:14 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77603</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>hayato</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>547678</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-01 23:23:25 -0800</bug_when>
    <thetext>Most of elements which use shadow root touch only built-in shadow root rather than user generated shadow root.
We should have a method to support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549746</commentid>
    <comment_count>1</comment_count>
      <attachid>125576</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-05 22:36:57 -0800</bug_when>
    <thetext>Created attachment 125576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549755</commentid>
    <comment_count>2</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-05 23:16:47 -0800</bug_when>
    <thetext>Ah, I forgot to remove Element::ensureShadowRoot from symbol export lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549756</commentid>
    <comment_count>3</comment_count>
      <attachid>125579</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-05 23:17:34 -0800</bug_when>
    <thetext>Created attachment 125579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549762</commentid>
    <comment_count>4</comment_count>
      <attachid>125579</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-02-05 23:29:23 -0800</bug_when>
    <thetext>Comment on attachment 125579
Patch

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

&gt; Source/WebCore/ChangeLog:44
&gt; +        (WebCore::ColorInputType::createShadowSubtree):

Would it be simpler to, instead of introducing a new BuiltinShadowRoot type and new methods for built-in shadows, to just have elements which have built-in shadows like *InputType, HTMLDetailsElement, HTMLKeygenElement, HTMLMediaElement, HTMLTextAreaElement, etc. have a member that points to its built-in shadow root? It avoids the virtual method call, avoids new API, avoids a new type, etc.

You can leave the shadow root mechanism to manage the refcount of the built-in shadow root, since there is no way to remove them, and just use a raw pointer to the built-in shadow root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549801</commentid>
    <comment_count>5</comment_count>
      <attachid>125579</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-06 00:45:03 -0800</bug_when>
    <thetext>Comment on attachment 125579
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:44
&gt;&gt; +        (WebCore::ColorInputType::createShadowSubtree):
&gt; 
&gt; Would it be simpler to, instead of introducing a new BuiltinShadowRoot type and new methods for built-in shadows, to just have elements which have built-in shadows like *InputType, HTMLDetailsElement, HTMLKeygenElement, HTMLMediaElement, HTMLTextAreaElement, etc. have a member that points to its built-in shadow root? It avoids the virtual method call, avoids new API, avoids a new type, etc.
&gt; 
&gt; You can leave the shadow root mechanism to manage the refcount of the built-in shadow root, since there is no way to remove them, and just use a raw pointer to the built-in shadow root.

Let me mention that there is a case that a shadow root is recreated now. For example, input element recreates shadow root when its type attribute is changed.
So we have to have a new API to insert/remove built-in shadow root now. Otherwise we have to change HTMLInputElement behavior.

This patch is a first step to support shadow subtree. Before adding multiple shadow subtrees, we must have a way to distinguish built-in shadow root from user generated shadow root because currently they are mixed. It is very confusing.

In my plan,
  (1) distinguish built-in and user generated shadow root.
  (2) allow us to have multiple shadow subtrees (with built-in shadow root and generated shadow root clearly separated)
  (3) removes ensureShadowRoot.
  (3) merge them if possible.

Maybe we can have a pointer to a built-in shadow root, however, I don&apos;t want to do in this patch. If we introduce such a pointer in this patch, we cannot share ensureBuiltinShadowRoot method. This will make this patch complex. I have a plan to kill this method later, so let&apos;s do that in later patch (3).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550062</commentid>
    <comment_count>6</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-06 09:30:38 -0800</bug_when>
    <thetext>Generally, I am not convinced that we need to differentiate between &quot;built-in&quot; and user shadow DOM subtrees. If there are some special cases where the shadow DOM subtrees are added and removed, we need to understand what this means in the general shadow DOM perspective. For example, in the case of decorators, we&apos;ll have a very similar situation.

Also, the &quot;built-in&quot; terminology seems a bit off. Perhaps we should seek similarity with styles and call them User Agent shadow DOM subtrees?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550063</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-06 09:33:05 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 125579 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=125579&amp;action=review

&gt; Let me mention that there is a case that a shadow root is recreated now. For example, input element recreates shadow root when its type attribute is changed.
&gt; So we have to have a new API to insert/remove built-in shadow root now. Otherwise we have to change HTMLInputElement behavior.

Does this not seem like an idea worth pursuing? Don&apos;t get me wrong, I don&apos;t want to block your progress. But if we can&apos;t _explain_ things as trivial as input elements in terms the current Shadow DOM spec, perhaps this should be viewed as a deficiency of the spec, not an implementation quirk? Just thinking outloud here. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550393</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-06 16:19:55 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Does this not seem like an idea worth pursuing? Don&apos;t get me wrong, I don&apos;t want to block your progress. But if we can&apos;t _explain_ things as trivial as input elements in terms the current Shadow DOM spec, perhaps this should be viewed as a deficiency of the spec, not an implementation quirk? Just thinking outloud here. WDYT?

TL;DR:
- Let&apos;s start from more trivial shadow implementations like &lt;media&gt; and &lt;summary&gt;
   which doesn&apos;t swap shadows dynamically. Then come back here.
- Allowing access to non-last ShadowRoot looks reasonable. But allowing to replace it 
   may be doubtful.

---

Some existing elements, especially &lt;input&gt; family, are implemented on an shadow dom concept
of early day&apos;s, which allows us to replace shadow DOM, doesn&apos;t have multiple shadows, etc. 
Such conceptual gaps make it tricky to adopt multiple shadows.

Ideally, we should refactor stuff to match the latest model. It will be easy for most of 
WebCore internal use. But maybe &lt;input&gt; is harder than average. 
At least we need to reshape the &lt;input&gt; shadow trees.

On introducing new member that Dominic mentioned, it&apos;s conceptually more natural,
that means it doesn&apos;t need any backdoor.
But in C++, maintaing any extra reference tends to cause a trouble.

So I prefer to allow  C++ implementation only to reach ShadowRoot chain to get &quot;hidden&quot; pointer,
but not to allow replacing such ShadowRoots dynamically. that looks an abuse of WebCore authority. 
It&apos;s like a __proto__ in JavaScript. We should be cautious about issuing it.

But anyway, we can start from more trivial part like &lt;media&gt; and &lt;summary&gt;.
The multiple shadows concept is a wild where anyone hasn&apos;t stepped in.
We need to learn how it should be programmed by dogfooding it ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550520</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-06 18:43:12 -0800</bug_when>
    <thetext>OK...

Let me try to make more steps.
I&apos;ll create bugs for the steps soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552197</commentid>
    <comment_count>10</comment_count>
      <attachid>125579</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-08 09:19:14 -0800</bug_when>
    <thetext>Comment on attachment 125579
Patch

removing the patch from the review queue for now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125576</attachid>
            <date>2012-02-05 22:36:57 -0800</date>
            <delta_ts>2012-02-05 23:17:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>37366</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMjE1NWY5Li40NmRhYzIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDIt
MDUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbnRy
b2R1Y2VzIEJ1aWx0aW5TaGFkb3dSb290IGFuZCBtZXRob2RzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2MTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9idWlsdGluLXNo
YWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9idWls
dGluLXNoYWRvdy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisK
IDIwMTItMDItMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZWJhc2VsaW5lIHhzcy1pbmFjdGl2ZS1jbG9zdXJlLmh0bWwuICBUaGlzIHRlc3QgImZhaWxzIiBi
ZWNhdXNlIG9mIGEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9idWls
dGluLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYnVp
bHRpbi1zaGFkb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjI4MjkxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvYnVpbHRpbi1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNTIgQEAKK1Rlc3RzIHRv
IGVuc3VyZSB0aGF0IGJ1aWx0LWluIHNoYWRvdyByb290IGlzIG5vdCBvdmVycmlkZW4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0RFVEFJTFMKK1BBU1MgaW50ZXJuYWxzLmlzQnVp
bHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSkpIGlzIHRydWUKK1BBU1Mg
bmV3IFdlYktpdFNoYWRvd1Jvb3QoZWxlbSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBISUVSQVJD
SFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMy4KK01FVEVSCitQQVNTIGludGVybmFscy5p
c0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFkb3dSb290KGVsZW0pKSBpcyB0cnVlCitQ
QVNTIG5ldyBXZWJLaXRTaGFkb3dSb290KGVsZW0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSElF
UkFSQ0hZX1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9uIDMuCitQUk9HUkVTUworUEFTUyBpbnRl
cm5hbHMuaXNCdWlsdGluU2hhZG93Um9vdChpbnRlcm5hbHMuc2hhZG93Um9vdChlbGVtKSkgaXMg
dHJ1ZQorUEFTUyBuZXcgV2ViS2l0U2hhZG93Um9vdChlbGVtKSB0aHJldyBleGNlcHRpb24gRXJy
b3I6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlvbiAzLgorU1VNTUFSWQorUEFT
UyBpbnRlcm5hbHMuaXNCdWlsdGluU2hhZG93Um9vdChpbnRlcm5hbHMuc2hhZG93Um9vdChlbGVt
KSkgaXMgdHJ1ZQorUEFTUyBuZXcgV2ViS2l0U2hhZG93Um9vdChlbGVtKSB0aHJldyBleGNlcHRp
b24gRXJyb3I6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlvbiAzLgorVEVYVEFS
RUEKK1BBU1MgaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jv
b3QoZWxlbSkpIGlzIHRydWUKK1BBU1MgbmV3IFdlYktpdFNoYWRvd1Jvb3QoZWxlbSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMy4K
K0lOUFVUCitQQVNTIGludGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFk
b3dSb290KGVsZW0pKSBpcyB0cnVlCitQQVNTIG5ldyBXZWJLaXRTaGFkb3dSb290KGVsZW0pIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9u
IDMuCitLRVlHRU4KK1BBU1MgaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxz
LnNoYWRvd1Jvb3QoZWxlbSkpIGlzIHRydWUKK1BBU1MgbmV3IFdlYktpdFNoYWRvd1Jvb3QoZWxl
bSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBFeGNl
cHRpb24gMy4KK1ZJREVPCitQQVNTIGludGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVy
bmFscy5zaGFkb3dSb290KGVsZW0pKSBpcyB0cnVlCitQQVNTIG5ldyBXZWJLaXRTaGFkb3dSb290
KGVsZW0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBET00g
RXhjZXB0aW9uIDMuCitBVURJTworUEFTUyBpbnRlcm5hbHMuaXNCdWlsdGluU2hhZG93Um9vdChp
bnRlcm5hbHMuc2hhZG93Um9vdChlbGVtKSkgaXMgdHJ1ZQorUEFTUyBuZXcgV2ViS2l0U2hhZG93
Um9vdChlbGVtKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjog
RE9NIEV4Y2VwdGlvbiAzLgorRElWCitQQVNTIHJvb3QgaXMgbnVsbAorUEFTUyByb290ICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaXNCdWlsdGluU2hhZG93Um9vdChpbnRlcm5hbHMu
c2hhZG93Um9vdChlbGVtKSkgaXMgZmFsc2UKK1NQQU4KK1BBU1Mgcm9vdCBpcyBudWxsCitQQVNT
IHJvb3QgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGludGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290
KGludGVybmFscy5zaGFkb3dSb290KGVsZW0pKSBpcyBmYWxzZQorQQorUEFTUyByb290IGlzIG51
bGwKK1BBU1Mgcm9vdCAhPSBudWxsIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzQnVpbHRpblNo
YWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSkpIGlzIGZhbHNlCitGT09URVIKK1BB
U1Mgcm9vdCBpcyBudWxsCitQQVNTIHJvb3QgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGludGVybmFs
cy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFkb3dSb290KGVsZW0pKSBpcyBmYWxz
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9idWlsdGluLXNoYWRvdy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VhNzU3YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9idWlsdGluLXNoYWRvdy5odG1sCkBAIC0wLDAg
KzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgor
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRvIGVuc3VyZSB0aGF0IGJ1aWx0LWluIHNo
YWRvdyByb290IGlzIG5vdCBvdmVycmlkZW4iKTsKKworZnVuY3Rpb24gdGVzdEJ1aWx0aW4oZWxl
bSkgeworICAgIGRlYnVnKGVsZW0udGFnTmFtZSk7CisKKyAgICB2YXIgcm9vdCA9IGludGVybmFs
cy5zaGFkb3dSb290KGVsZW0pOworICAgIHdpbmRvdy5lbGVtID0gZWxlbTsKKyAgICBzaG91bGRC
ZVRydWUoImludGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFkb3dSb290
KGVsZW0pKSIpOworCisgICAgLy8gRklYTUU6IEN1cnJlbnRseSB3ZSBkb24ndCBzdXBwb3J0IG11
bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcywgdGhpcyBzdGF0ZW1lbnQgc2hvdWxkIHRocm93IGFuIGVy
cm9yLgorICAgIHNob3VsZFRocm93KCJuZXcgV2ViS2l0U2hhZG93Um9vdChlbGVtKSIpOworfQor
CitmdW5jdGlvbiB0ZXN0QWRkU2hhZG93KGVsZW0pIHsKKyAgICBkZWJ1ZyhlbGVtLnRhZ05hbWUp
OworCisgICAgcm9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGVsZW0pOworICAgIHNob3VsZEJl
KCJyb290IiwgIm51bGwiKTsKKworICAgIHJvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChlbGVt
KTsKKyAgICBzaG91bGRCZVRydWUoInJvb3QgIT0gbnVsbCIpOworCisgICAgLy8gQSBuZXcgc2hh
ZG93IHJvb3Qgc2hvdWxkIG5vdCBiZSBhIGJ1aWx0aW4gc2hhZG93IHJvb3QuCisgICAgd2luZG93
LmVsZW0gPSBlbGVtOworICAgIHNob3VsZEJlRmFsc2UoImludGVybmFscy5pc0J1aWx0aW5TaGFk
b3dSb290KGludGVybmFscy5zaGFkb3dSb290KGVsZW0pKSIpOworfQorCisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitmdW5jdGlvbiB0ZXN0R2VuZXJhbEVsZW1lbnRzKCkgeworICAgIHZh
ciBuYW1lcyA9IFsKKyAgICAgICAgImRldGFpbHMiLCAibWV0ZXIiLCAicHJvZ3Jlc3MiLCAic3Vt
bWFyeSIsICJ0ZXh0YXJlYSIsICJpbnB1dCIsICJrZXlnZW4iLAorICAgIF07CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKQorICAgICAgICB0ZXN0QnVpbHRpbihk
b2N1bWVudC5jcmVhdGVFbGVtZW50KG5hbWVzW2ldKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3RNZWRp
YUNvbnRyb2woKSB7CisgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndmlk
ZW8nKTsKKyAgICB2aWRlby5jb250cm9scyA9IHRydWU7CisgICAgdGVzdEJ1aWx0aW4odmlkZW8p
OworCisgICAgdmFyIGF1ZGlvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXVkaW8nKTsKKyAg
ICBhdWRpby5jb250cm9scyA9IHRydWU7CisgICAgdGVzdEJ1aWx0aW4oYXVkaW8pOworfQorCitm
dW5jdGlvbiB0ZXN0RWxlbWVudHNOb3RIYXZpbmdTaGFkb3dSb290KCkgeworICAgIHZhciBuYW1l
cyA9IFsgImRpdiIsICJzcGFuIiwgImEiLCAiZm9vdGVyIiBdOworCisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkKKyAgICAgICAgdGVzdEFkZFNoYWRvdyhkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KG5hbWVzW2ldKSk7Cit9CisKK3Rlc3RHZW5lcmFsRWxlbWVudHMoKTsK
K3Rlc3RNZWRpYUNvbnRyb2woKTsKK3Rlc3RFbGVtZW50c05vdEhhdmluZ1NoYWRvd1Jvb3QoKTsK
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggNDAwNGEwOS4uMzliZWNmZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTE5MzgsNiArMTkzOCw3IEBAIGZhc3QvY3Nz
L3N0eWxlLXNjb3BlZAogCiAjIEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAorZmFzdC9kb20vc2hhZG93L2J1aWx0
aW4tc2hhZG93Lmh0bWwKIAogIyBDU1MgRmlsdGVycyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZCAo
bmVlZHMgRU5BQkxFX0NTU19GSUxURVJTKS4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY4NDY5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDEzZTYxYWMu
LjgxMDQzOGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zNTEsNiArMzUxLDcgQEAg
ZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVk
LgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCitmYXN0L2RvbS9zaGFk
b3cvYnVpbHRpbi1zaGFkb3cuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBl
bmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKaW5kZXggOTg2NTczMC4uNTA2YjZlZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKQEAgLTQxNiw2ICs0MTYsNyBAQCBmYXN0L2Nzcy9zdHlsZS1zY29wZWQKIAogIyBF
TkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtanMtYXBpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9idWlsdGluLXNoYWRvdy5odG1sCiAKICMg
SlNDIGRvZXMgbm90IHN1cHBvcnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luIChodHRw
Oi8vd2Via2l0Lm9yZy9iLzYxNTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxk
L2Nyb3NzLW9yaWdpbi14aHIuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggYmI1MzU5
Mi4uMDQ3NGYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNTksNiArMTU5LDcgQEAg
ZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVk
LgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCitmYXN0L2RvbS9zaGFk
b3cvYnVpbHRpbi1zaGFkb3cuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBl
bmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1NraXBwZWQKaW5kZXggZmQxMDAwYS4uZDg1OWMwNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQKQEAgLTE0MzksNiArMTQzOSw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogCiAj
IEVOQUJMRShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1qcy1hcGkuaHRtbAorZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93Lmh0bWwKIAog
IyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcv
Yi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApp
bmRleCA1ZmY3OWI1Li5mZjhjNDRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBw
ZWQKQEAgLTE5NjMsNiArMTk2Myw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogCiAjIEVOQUJM
RShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1q
cy1hcGkuaHRtbAorZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93Lmh0bWwKIAogIyBDU1Mg
UmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMx
MgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ2OWZkNS4uZDQxMzQyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAyLTA1ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFr
QGdvb2dsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlcyBCdWlsdGluU2hhZG93Um9vdCBhbmQg
bWV0aG9kcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2NjEwCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgYnVpbHQtaW4gc2hhZG93
IHJvb3QsIHdoaWNoIGlzIGEgc2hhZG93IHJvb3QgdXNlZCBpbnRlcm5hbGx5LgorICAgICAgICBX
aGVuIHN1cHBvcnRpbmcgYSBtdWx0aXBsZSBzaGFkb3cgc3VidHJlc3MsIGVsZW1lbnRzIHdhbnQg
dG8gdGFrZSBpdHMgaW50ZXJuYWwgc2hhZG93IHJvb3QgaW5zdGVhZCBvZgorICAgICAgICBvbmUg
Z2VuZXJhdGVkIGJ5IHVzZXJzLiBNZXRob2QgbGlrZSBidWlsdGluU2hhZG93Um9vdCgpIGVuYWJs
ZXMgdXMgdG8gZG8gaXQuCisKKyAgICAgICAgREVUQUlMUywgU1VNTUFSWSwgVklERU8sIGFuZCBt
b3JlIGVsZW1lbnQgaGF2ZSB0aGlzIGtpbmQgb2YgaW50ZXJuYWwgYnVpbHRpbiBzaGFkb3cgcm9v
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBmYXN0L2RvbS9zaGFkb3cvYnVpbHRpbi1zaGFkb3cuaHRtbAorCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YnVpbHRpblNoYWRvd1Jvb3Qp
OgorICAgICAgICAgIEdldHMgYSBidWlsdGluIHNoYWRvdyByb290IGlmIGFueS4KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldEJ1aWx0aW5TaGFkb3dSb290KToKKyAgICAgICAgICBTZXRz
IGEgYnVpbHRpbiBzaGFkb3cgcm9vdC4gQ3VycmVudGx5IGlmIGEgc2hhZG93IHJvb3QgZXhpc3Rz
IGFscmVhZHksIHRoaXMgbWV0aG9kIHdpbGwgbm90IGRvIGFueXRoaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6cmVtb3ZlQnVpbHRpblNoYWRvd1Jvb3QpOgorICAgICAgICAgIFJlbW92ZXMg
YSBidWlsdGluIHNoYWRvdyByb290LgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290
LmNwcDoKKyAgICAgICAgICBJbnRyb2R1Y2VzIGEgYnVpbHRpbiBzaGFkb3cgcm9vdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkJ1aWx0aW5TaGFkb3dSb290OjpCdWlsdGluU2hhZG93Um9vdCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1aWx0aW5TaGFkb3dSb290Ojp+QnVp
bHRpblNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QnVpbHRpblNoYWRvd1Jvb3Q6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsdGluU2hhZG93Um9vdDo6aXNCdWlsdGluKToK
KyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9v
dDo6aXNCdWlsdGluKToKKyAgICAgICAgKFNoYWRvd1Jvb3QpOgorICAgICAgICAoQnVpbHRpblNo
YWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsdGlu
U2hhZG93Um9vdDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL0NvbG9ySW5wdXRUeXBlLmNwcDoK
KyAgICAgICAgICBVc2VzIGJ1aWx0aW5TaGFkb3dSb290KCkgbWV0aG9kIGluc3RlYWQgb2Ygc2hh
ZG93Um9vdCgpLgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRv
d1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9y
U3dhdGNoKToKKyAgICAgICAgKiBodG1sL0ZpbGVJbnB1dFR5cGUuY3BwOiBkaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHA6IGRpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxEZXRhaWxzRWxlbWVudDo6ZmluZE1haW5TdW1tYXJ5KToKKyAgICAgICAg
KiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpI
VE1MS2V5Z2VuRWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTEtleWdlbkVsZW1lbnQ6OnNoYWRvd1NlbGVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhh
c01lZGlhQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y3Jl
YXRlTWVkaWFDb250cm9scyk6CisgICAgICAgICogaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcDog
ZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKToKKyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwOiBkaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUpOgorICAgICAgICAqIGh0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcDogZGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojppbm5lclRleHRFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4
dCk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6ZGVzdHJveVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAqIGh0bWwvUmFu
Z2VJbnB1dFR5cGUuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlSW5wdXRUeXBl
OjpoYW5kbGVNb3VzZURvd25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZUlucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5
cGUuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRGaWVsZElucHV0VHlwZTo6Y3Jl
YXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6
OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2Fn
ZS5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxk
QnViYmxlVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRl
QnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cDogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpzbGlkZXJUaHVtYkVsZW1lbnRPZik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjp0cmFja0xpbWl0ZXJFbGVtZW50T2YpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
RmlsZVVwbG9hZENvbnRyb2w6OnVwbG9hZEJ1dHRvbik6CisgICAgICAgICogc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcDogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6dXBk
YXRlUmVmZXJlbmNlZFRleHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNCdWlsdGluU2hhZG93Um9vdCk6CisgICAgICAg
ICAgQ2hlY2tzIGEgc2hhZG93IHJvb3QgaXMgYnVpbHRpbiBvciBub3QuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAoSW50ZXJuYWxz
KToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMDItMDUgIEFuZHJl
YXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVz
ZWQgZmlsZSBNYXBwZWRBdHRyaWJ1dGVFbnRyeS5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGY5N2I1ZTIuLjZjMzdiMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTExOTQsMTcgKzEx
OTQsNiBAQCB2b2lkIEVsZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290
PiBwcnBTaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJgogICAgIH0KIH0KIAotU2hhZG93Um9vdCog
RWxlbWVudDo6ZW5zdXJlU2hhZG93Um9vdCgpCi17Ci0gICAgaWYgKFNoYWRvd1Jvb3QqIGV4aXN0
aW5nUm9vdCA9IHNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGV4aXN0aW5nUm9vdDsKLQot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNldFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6
Y3JlYXRlKGRvY3VtZW50KCkpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAgcmV0dXJuIHNo
YWRvd1Jvb3QoKTsKLX0KLQogdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKIHsKICAg
ICBpZiAoIWhhc1JhcmVEYXRhKCkpCkBAIC0xMjMzLDYgKzEyMjIsNDEgQEAgdm9pZCBFbGVtZW50
OjpyZW1vdmVTaGFkb3dSb290KCkKICAgICB9CiB9CiAKK0J1aWx0aW5TaGFkb3dSb290KiBFbGVt
ZW50OjpidWlsdGluU2hhZG93Um9vdCgpIGNvbnN0Cit7CisgICAgU2hhZG93Um9vdCogcm9vdCA9
IHNoYWRvd1Jvb3QoKTsKKyAgICBpZiAocm9vdCAmJiByb290LT5pc0J1aWx0aW4oKSkKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEJ1aWx0aW5TaGFkb3dSb290Kj4ocm9vdCk7CisKKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBFbGVtZW50OjpzZXRCdWlsdGluU2hhZG93Um9vdChQYXNzUmVm
UHRyPEJ1aWx0aW5TaGFkb3dSb290PiByb290LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICAv
LyBGSVhNRTogU2luY2Ugd2UgZG9uJ3Qgc3VwcG9ydCBtdWx0aXBsZSB5ZXQsIHdlIGNvbmZpcm0g
dGhhdCBhIHNoYWRvdyByb290IGRvZXMgbm90IGV4aXN0IG5vdy4KKyAgICBBU1NFUlQoIXNoYWRv
d1Jvb3QoKSk7CisKKyAgICBzZXRTaGFkb3dSb290KHJvb3QsIGVjKTsKK30KKworQnVpbHRpblNo
YWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZUJ1aWx0aW5TaGFkb3dSb290KCkKK3sKKyAgICBpZiAo
QnVpbHRpblNoYWRvd1Jvb3QqIGV4aXN0aW5nUm9vdCA9IGJ1aWx0aW5TaGFkb3dSb290KCkpCisg
ICAgICAgIHJldHVybiBleGlzdGluZ1Jvb3Q7CisKKyAgICAvLyBGSVhNRTogU2luY2Ugd2UgZG9u
J3Qgc3VwcG9ydCBtdWx0aXBsZSB5ZXQsIHdlIGNvbmZpcm0gdGhhdCBhIHNoYWRvdyByb290IGRv
ZXMgbm90IGV4aXN0IG5vdy4KKyAgICBBU1NFUlQoIXNoYWRvd1Jvb3QoKSk7CisKKyAgICBzZXRC
dWlsdGluU2hhZG93Um9vdChCdWlsdGluU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByZXR1cm4gYnVpbHRpblNoYWRvd1Jvb3QoKTsKK30K
Kwordm9pZCBFbGVtZW50OjpyZW1vdmVCdWlsdGluU2hhZG93Um9vdCgpCit7CisgICAgaWYgKHNo
YWRvd1Jvb3QoKSAmJiBzaGFkb3dSb290KCktPmlzQnVpbHRpbigpKQorICAgICAgICByZW1vdmVT
aGFkb3dSb290KCk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6c2hhZG93UHNl
dWRvSWQoKSBjb25zdAogewogICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gcmFyZURhdGEoKS0+
bV9zaGFkb3dQc2V1ZG9JZCA6IG51bGxBdG9tOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYWMyODFj
NS4uZjI1YzQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF0dHJpYnV0ZTsKK2NsYXNzIEJ1aWx0aW5TaGFkb3dSb290
OwogY2xhc3MgQ2xpZW50UmVjdDsKIGNsYXNzIENsaWVudFJlY3RMaXN0OwogY2xhc3MgRE9NU3Ry
aW5nTWFwOwpAQCAtMjQzLDkgKzI0NCwxMyBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dSb290KiBz
aGFkb3dSb290KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hh
ZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBTaGFkb3dSb290KiBlbnN1cmVTaGFkb3dS
b290KCk7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKKyAgICBCdWlsdGluU2hhZG93
Um9vdCogYnVpbHRpblNoYWRvd1Jvb3QoKSBjb25zdDsKKyAgICB2b2lkIHNldEJ1aWx0aW5TaGFk
b3dSb290KFBhc3NSZWZQdHI8QnVpbHRpblNoYWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgQnVpbHRpblNoYWRvd1Jvb3QqIGVuc3VyZUJ1aWx0aW5TaGFkb3dSb290KCk7CisgICAgdm9p
ZCByZW1vdmVCdWlsdGluU2hhZG93Um9vdCgpOworCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTaGFkb3dQc2V1ZG9J
ZChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJiA9IEFTU0VSVF9OT19FWENFUFRJ
T04pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggOWJhNjhiZC4uOWM5ZTMzYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMjE1LDUgKzIxNSwzOCBAQCBDb250ZW50
SW5jbHVzaW9uU2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZUluY2x1c2lvbnMoKQogICAgIHJl
dHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7CiB9CiAKK0J1aWx0aW5TaGFkb3dSb290OjpCdWlsdGlu
U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTaGFkb3dSb290KGRvY3VtZW50
KQoreworfQorCitCdWlsdGluU2hhZG93Um9vdDo6fkJ1aWx0aW5TaGFkb3dSb290KCkKK3sKK30K
KworUGFzc1JlZlB0cjxCdWlsdGluU2hhZG93Um9vdD4gQnVpbHRpblNoYWRvd1Jvb3Q6OmNyZWF0
ZShFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWVsZW1l
bnQgfHwgZWxlbWVudC0+YnVpbHRpblNoYWRvd1Jvb3QoKSkgeworICAgICAgICBlYyA9IEhJRVJB
UkNIWV9SRVFVRVNUX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8gRklY
TUU6IEN1cnJlbnRseSB3ZSBkb24ndCBzdXBwb3J0IG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVlcy4g
U28gd2UgYXNzdXJlIHRoYXQKKyAgICAvLyBubyBzaGFkb3cgcm9vdCBleGlzdHMgb24gdGhpcyBl
bGVtZW50LgorICAgIGlmIChlbGVtZW50LT5zaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBI
SUVSQVJDSFlfUkVRVUVTVF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJl
ZlB0cjxCdWlsdGluU2hhZG93Um9vdD4gc2hhZG93Um9vdCA9IGNyZWF0ZShlbGVtZW50LT5kb2N1
bWVudCgpKTsKKyAgICBlbGVtZW50LT5zZXRCdWlsdGluU2hhZG93Um9vdChzaGFkb3dSb290LCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIHJldHVybiBzaGFkb3dSb290LnJlbGVhc2UoKTsK
K30KKworYm9vbCBCdWlsdGluU2hhZG93Um9vdDo6aXNCdWlsdGluKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggZDBiMTg5NC4u
MTNkMDYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNsZWFyTmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwog
ICAgIGJvb2wgbmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwogCisgICAgdmly
dHVhbCBib29sIGlzQnVpbHRpbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAgICBIVE1M
Q29udGVudEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGhvc3RD
aGlsZHJlbkNoYW5nZWQoKTsKICAgICBib29sIGlzSW5jbHVzaW9uU2VsZWN0b3JBY3RpdmUoKSBj
b25zdDsKQEAgLTYzLDEwICs2NSwxMSBAQCBwdWJsaWM6CiAgICAgQ29udGVudEluY2x1c2lvblNl
bGVjdG9yKiBpbmNsdXNpb25zKCkgY29uc3Q7CiAgICAgQ29udGVudEluY2x1c2lvblNlbGVjdG9y
KiBlbnN1cmVJbmNsdXNpb25zKCk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgU2hhZG93
Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflNoYWRvd1Jvb3QoKTsKIAorcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTm9kZVR5
cGUgbm9kZVR5cGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVO
b2RlKGJvb2wgZGVlcCk7CkBAIC0xMDAsNiArMTAzLDIzIEBAIGlubGluZSBTaGFkb3dSb290KiB0
b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2hhZG93Um9v
dCo+KG5vZGUpOwogfQogCitjbGFzcyBCdWlsdGluU2hhZG93Um9vdCA6IHB1YmxpYyBTaGFkb3dS
b290IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxCdWlsdGluU2hhZG93Um9vdD4g
Y3JlYXRlKERvY3VtZW50Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QnVpbHRpblNoYWRvd1Jv
b3Q+IGNyZWF0ZShFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgdmlydHVhbCBib29s
IGlzQnVpbHRpbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIEJ1aWx0aW5TaGFkb3dSb290KERv
Y3VtZW50Kik7CisgICAgdmlydHVhbCB+QnVpbHRpblNoYWRvd1Jvb3QoKTsKK307CisKK2lubGlu
ZSBQYXNzUmVmUHRyPEJ1aWx0aW5TaGFkb3dSb290PiBCdWlsdGluU2hhZG93Um9vdDo6Y3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJ1aWx0aW5T
aGFkb3dSb290KGRvY3VtZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCAwNzFjYzM0Li5hYTg1ZjE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBA
IHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIHdyYXBwZXJFbGVtZW50LT5hcHBlbmRDaGlsZChjb2xvclN3YXRj
aC5yZWxlYXNlKCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKLSAgICBlbGVtZW50KCktPmVuc3Vy
ZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQod3JhcHBlckVsZW1lbnQucmVsZWFzZSgpLCBlYyk7
CisgICAgZWxlbWVudCgpLT5lbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCh3
cmFwcGVyRWxlbWVudC5yZWxlYXNlKCksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKICAgICAKICAg
ICB1cGRhdGVDb2xvclN3YXRjaCgpOwpAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgQ29sb3JJbnB1
dFR5cGU6OnVwZGF0ZUNvbG9yU3dhdGNoKCkKIAogSFRNTEVsZW1lbnQqIENvbG9ySW5wdXRUeXBl
OjpzaGFkb3dDb2xvclN3YXRjaCgpIGNvbnN0CiB7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0g
ZWxlbWVudCgpLT5zaGFkb3dSb290KCk7CisgICAgQnVpbHRpblNoYWRvd1Jvb3QqIHNoYWRvdyA9
IGVsZW1lbnQoKS0+YnVpbHRpblNoYWRvd1Jvb3QoKTsKICAgICByZXR1cm4gc2hhZG93ID8gdG9I
VE1MRWxlbWVudChzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpKSA6IDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3BwCmluZGV4IGVhOWEyZWUuLmNlYmM2NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9GaWxlSW5wdXRUeXBlLmNwcApAQCAtMjY2LDEyICsyNjYsMTIg
QEAgYm9vbCBGaWxlSW5wdXRUeXBlOjppc0ZpbGVVcGxvYWQoKSBjb25zdAogdm9pZCBGaWxlSW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBlbGVtZW50KCktPmVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoZWxlbWVu
dCgpLT5tdWx0aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUo
ZWxlbWVudCgpLT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1l
bnQoKS0+ZG9jdW1lbnQoKSksIGVjKTsKKyAgICBlbGVtZW50KCktPmVuc3VyZUJ1aWx0aW5TaGFk
b3dSb290KCktPmFwcGVuZENoaWxkKGVsZW1lbnQoKS0+bXVsdGlwbGUoKSA/IFVwbG9hZEJ1dHRv
bkVsZW1lbnQ6OmNyZWF0ZUZvck11bHRpcGxlKGVsZW1lbnQoKS0+ZG9jdW1lbnQoKSk6IFVwbG9h
ZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpLCBlYyk7CiB9CiAK
IHZvaWQgRmlsZUlucHV0VHlwZTo6bXVsdGlwbGVBdHRyaWJ1dGVDaGFuZ2VkKCkKIHsKLSAgICBV
cGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNfY2FzdDxVcGxvYWRCdXR0b25FbGVt
ZW50Kj4oZWxlbWVudCgpLT5lbnN1cmVTaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7CisgICAg
VXBsb2FkQnV0dG9uRWxlbWVudCogYnV0dG9uID0gc3RhdGljX2Nhc3Q8VXBsb2FkQnV0dG9uRWxl
bWVudCo+KGVsZW1lbnQoKS0+ZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgp
KTsKICAgICBpZiAoYnV0dG9uKQogICAgICAgICBidXR0b24tPnNldFZhbHVlKGVsZW1lbnQoKS0+
bXVsdGlwbGUoKSA/IGZpbGVCdXR0b25DaG9vc2VNdWx0aXBsZUZpbGVzTGFiZWwoKSA6IGZpbGVC
dXR0b25DaG9vc2VGaWxlTGFiZWwoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRh
aWxzRWxlbWVudC5jcHAKaW5kZXggMTdkODZkMi4uNzZiZmY0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcApAQCAtMTA4LDkgKzEwOCw5IEBAIFJlbmRlck9i
amVjdCogSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlCiAKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKIHsKLSAgICBBU1NFUlQoIXNoYWRvd1Jvb3QoKSk7Ci0gICAgZW5zdXJlU2hhZG93
Um9vdCgpLT5hcHBlbmRDaGlsZChEZXRhaWxzU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTiwgdHJ1ZSk7Ci0gICAgZW5zdXJlU2hhZG93Um9vdCgp
LT5hcHBlbmRDaGlsZChEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwg
QVNTRVJUX05PX0VYQ0VQVElPTiwgdHJ1ZSk7CisgICAgQVNTRVJUKCFidWlsdGluU2hhZG93Um9v
dCgpKTsKKyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChEZXRhaWxz
U3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgQVNTRVJUX05PX0VYQ0VQVElPTiwg
dHJ1ZSk7CisgICAgZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoRGV0YWls
c0NvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04s
IHRydWUpOwogfQogCiBFbGVtZW50KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRNYWluU3VtbWFy
eSgpIGNvbnN0CkBAIC0xMjAsNyArMTIwLDcgQEAgRWxlbWVudCogSFRNTERldGFpbHNFbGVtZW50
OjpmaW5kTWFpblN1bW1hcnkoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChj
aGlsZCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxl
bWVudCo+KHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1tYXJ5KCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PERldGFpbHNTdW1tYXJ5RWxlbWVudCo+KGJ1aWx0aW5TaGFk
b3dSb290KCktPmZpcnN0Q2hpbGQoKSktPmZhbGxiYWNrU3VtbWFyeSgpOwogfQogCiB2b2lkIEhU
TUxEZXRhaWxzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAppbmRleCA3NzdlZTE1Li44YTljZmE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcApAQCAtODUsNyAr
ODUsNyBAQCBpbmxpbmUgSFRNTEtleWdlbkVsZW1lbnQ6OkhUTUxLZXlnZW5FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZQogICAgICAgICBvcHRpb24tPmFwcGVuZENo
aWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVudCwga2V5c1tpXSksIGVjKTsKICAgICB9CiAKLSAgICBl
bnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNlbGVjdCwgZWMpOworICAgIGVuc3VyZUJ1
aWx0aW5TaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHNlbGVjdCwgZWMpOwogfQogCiBQYXNzUmVm
UHRyPEhUTUxLZXlnZW5FbGVtZW50PiBIVE1MS2V5Z2VuRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50
KiBmb3JtKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgSFRNTEtleWdlbkVsZW1lbnQ6OnJlc2V0
KCkKIAogSFRNTFNlbGVjdEVsZW1lbnQqIEhUTUxLZXlnZW5FbGVtZW50OjpzaGFkb3dTZWxlY3Qo
KSBjb25zdAogewotICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHNoYWRvd1Jvb3QoKTsKKyAgICBC
dWlsdGluU2hhZG93Um9vdCogc2hhZG93ID0gYnVpbHRpblNoYWRvd1Jvb3QoKTsKICAgICBBU1NF
UlQoc2hhZG93KTsKICAgICByZXR1cm4gc2hhZG93ID8gdG9IVE1MU2VsZWN0RWxlbWVudChzaGFk
b3ctPmZpcnN0Q2hpbGQoKSkgOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggNzc3NDA0ZjYuLjRjZTU2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzUxNCwxNSArMzUxNCwxNSBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkKIAogTWVkaWFDb250cm9s
cyogSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDb250cm9scygpCiB7Ci0gICAgcmV0dXJuIHRvTWVk
aWFDb250cm9scyhzaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSk7CisgICAgcmV0dXJuIHRvTWVk
aWFDb250cm9scyhidWlsdGluU2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpOwogfQogCiBib29s
IEhUTUxNZWRpYUVsZW1lbnQ6Omhhc01lZGlhQ29udHJvbHMoKQogewotICAgIGlmICghc2hhZG93
Um9vdCgpKQorICAgIGlmICghYnVpbHRpblNoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOworICAg
IE5vZGUqIG5vZGUgPSBidWlsdGluU2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgcmV0
dXJuIG5vZGUgJiYgbm9kZS0+aXNNZWRpYUNvbnRyb2xzKCk7CiB9CiAKQEAgLTM1NDEsNyArMzU0
MSw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFDb250cm9scygpCiAgICAg
aWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBjb250cm9scy0+ZW50ZXJlZEZ1bGxzY3JlZW4o
KTsKIAotICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoY29udHJvbHMsIGVjKTsK
KyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChjb250cm9scywgZWMp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZXRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVt
ZW50LmNwcAppbmRleCBlMjMwZWE2Li43Y2RiMTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1ldGVyRWxlbWVudC5jcHAKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIEhUTUxNZXRlckVsZW1l
bnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIG1fdmFsdWUgPSBNZXRlclZhbHVlRWxlbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJh
ci0+YXBwZW5kQ2hpbGQobV92YWx1ZSwgZWMpOwotICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBw
ZW5kQ2hpbGQoYmFyLCBlYyk7CisgICAgZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5k
Q2hpbGQoYmFyLCBlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCBiYTRhODgzLi5kNWRlMDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAgLTE1Nyw3ICsxNTcs
NyBAQCB2b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAg
IG1fdmFsdWUgPSBQcm9ncmVzc1ZhbHVlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJhci0+YXBwZW5kQ2hpbGQobV92YWx1ZSwgZWMp
OwotICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoYmFyLCBlYyk7CisgICAgZW5z
dXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoYmFyLCBlYyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKaW5k
ZXggNzU4ZDg4OS4uNGEyMmY0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U3VtbWFyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlF
bGVtZW50LmNwcApAQCAtNzQsOCArNzQsOCBAQCBSZW5kZXJPYmplY3QqIEhUTUxTdW1tYXJ5RWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZQogdm9p
ZCBIVE1MU3VtbWFyeUVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoRGV0
YWlsc01hcmtlckNvbnRyb2w6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMsIHRydWUpOwotICAgIGVu
c3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoU3VtbWFyeUNvbnRlbnRFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSksIGVjLCB0cnVlKTsKKyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9vdCgp
LT5hcHBlbmRDaGlsZChEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBl
YywgdHJ1ZSk7CisgICAgZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoU3Vt
bWFyeUNvbnRlbnRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjLCB0cnVlKTsKIH0KIAog
SFRNTERldGFpbHNFbGVtZW50KiBIVE1MU3VtbWFyeUVsZW1lbnQ6OmRldGFpbHNFbGVtZW50KCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4
IGQ0OTVkY2UuLjFhMDM1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcApAQCAtODUsNyArODUsNyBAQCBQYXNzUmVmUHRyPEhUTUxUZXh0QXJlYUVsZW1l
bnQ+IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogdm9p
ZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKIHsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBlYyk7CisgICAg
ZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjKTsKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBIVE1MVGV4dEFyZWFFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdApAQCAtMjc3
LDcgKzI3Nyw3IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpzYW5pdGl6ZVVzZXJJbnB1
dFZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcG9zZWRWYWx1ZSwKIAogSFRNTEVsZW1lbnQqIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4dEVsZW1lbnQoKSBjb25zdAogewotICAgIE5vZGUqIG5v
ZGUgPSBzaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKKyAgICBOb2RlKiBub2RlID0gYnVpbHRp
blNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5o
YXNUYWdOYW1lKGRpdlRhZykpOwogICAgIHJldHVybiB0b0hUTUxFbGVtZW50KG5vZGUpOwogfQpA
QCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vo
b2xkZXJUZXh0KCkKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gc3RyaXBwZWRQbGFjZWhv
bGRlcigpOwogICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlm
IChtX3BsYWNlaG9sZGVyKSB7Ci0gICAgICAgICAgICBzaGFkb3dSb290KCktPnJlbW92ZUNoaWxk
KG1fcGxhY2Vob2xkZXIuZ2V0KCksIGVjKTsKKyAgICAgICAgICAgIGJ1aWx0aW5TaGFkb3dSb290
KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIGVjKTsKICAgICAgICAgICAgIEFT
U0VSVCghZWMpOwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlci5jbGVhcigpOwogICAgICAgICB9
CkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFj
ZWhvbGRlclRleHQoKQogICAgIGlmICghbV9wbGFjZWhvbGRlcikgewogICAgICAgICBtX3BsYWNl
aG9sZGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICAgICAgbV9w
bGFjZWhvbGRlci0+c2V0U2hhZG93UHNldWRvSWQoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIi
KTsKLSAgICAgICAgc2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgc2hh
ZG93Um9vdCgpLT5maXJzdENoaWxkKCktPm5leHRTaWJsaW5nKCksIGVjKTsKKyAgICAgICAgYnVp
bHRpblNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIGJ1aWx0aW5TaGFk
b3dSb290KCktPmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwogICAgICAgICBBU1NF
UlQoIWVjKTsKICAgICB9CiAgICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9s
ZGVyVGV4dCwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDU1MWYwOTUuLjg0
ZTgxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTM4MCw3ICszODAsNyBAQCB2
b2lkIElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAKIHZvaWQgSW5wdXRUeXBlOjpk
ZXN0cm95U2hhZG93U3VidHJlZSgpCiB7Ci0gICAgZWxlbWVudCgpLT5yZW1vdmVTaGFkb3dSb290
KCk7CisgICAgZWxlbWVudCgpLT5yZW1vdmVCdWlsdGluU2hhZG93Um9vdCgpOwogfQogCiBkb3Vi
bGUgSW5wdXRUeXBlOjpwYXJzZVRvRG91YmxlKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBkZWZhdWx0
VmFsdWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCmluZGV4IGFj
ZmUxY2MuLjExMTRiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwCkBA
IC0xNTcsNyArMTU3LDcgQEAgdm9pZCBSYW5nZUlucHV0VHlwZTo6aGFuZGxlTW91c2VEb3duRXZl
bnQoTW91c2VFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIHRhcmdl
dE5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwotICAgIGlmIChldmVudC0+YnV0dG9u
KCkgIT0gTGVmdEJ1dHRvbiB8fCAhdGFyZ2V0Tm9kZSB8fCAodGFyZ2V0Tm9kZSAhPSBlbGVtZW50
KCkgJiYgIXRhcmdldE5vZGUtPmlzRGVzY2VuZGFudE9mKGVsZW1lbnQoKS0+c2hhZG93Um9vdCgp
KSkpCisgICAgaWYgKGV2ZW50LT5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8ICF0YXJnZXROb2Rl
IHx8ICh0YXJnZXROb2RlICE9IGVsZW1lbnQoKSAmJiAhdGFyZ2V0Tm9kZS0+aXNEZXNjZW5kYW50
T2YoZWxlbWVudCgpLT5idWlsdGluU2hhZG93Um9vdCgpKSkpCiAgICAgICAgIHJldHVybjsKICAg
ICBTbGlkZXJUaHVtYkVsZW1lbnQqIHRodW1iID0gc2xpZGVyVGh1bWJFbGVtZW50T2YoZWxlbWVu
dCgpKTsKICAgICBpZiAodGFyZ2V0Tm9kZSA9PSB0aHVtYikKQEAgLTI0MSw3ICsyNDEsNyBAQCB2
b2lkIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICBSZWZQdHI8SFRN
TEVsZW1lbnQ+IGNvbnRhaW5lciA9IFNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CiAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZCh0cmFjay5yZWxlYXNlKCksIGVjKTsK
ICAgICBjb250YWluZXItPmFwcGVuZENoaWxkKFRyYWNrTGltaXRlckVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCksIGVjKTsKLSAgICBlbGVtZW50KCktPmVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5k
Q2hpbGQoY29udGFpbmVyLnJlbGVhc2UoKSwgZWMpOworICAgIGVsZW1lbnQoKS0+ZW5zdXJlQnVp
bHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoY29udGFpbmVyLnJlbGVhc2UoKSwgZWMpOwog
fQogCiBSZW5kZXJPYmplY3QqIFJhbmdlSW5wdXRUeXBlOjpjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dEZpZWxkSW5wdXRUeXBlLmNwcAppbmRleCAzZWMxNWJjLi41OTE5Y2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCkBAIC0yMDEsMTEgKzIwMSwxMSBAQCB2
b2lkIFRleHRGaWVsZElucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgbV9pbm5lclRleHQgPSBUZXh0Q29udHJvbElubmVyVGV4dEVs
ZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgaWYgKCFjcmVhdGVzQ29udGFpbmVyKSB7Ci0g
ICAgICAgIGVsZW1lbnQoKS0+ZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChtX2lubmVy
VGV4dCwgZWMpOworICAgICAgICBlbGVtZW50KCktPmVuc3VyZUJ1aWx0aW5TaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKG1faW5uZXJUZXh0LCBlYyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gZWxlbWVudCgpLT5lbnN1cmVTaGFkb3dSb290
KCk7CisgICAgQnVpbHRpblNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50KCktPmVuc3Vy
ZUJ1aWx0aW5TaGFkb3dSb290KCk7CiAgICAgbV9jb250YWluZXIgPSBIVE1MRGl2RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKICAgICBtX2NvbnRhaW5lci0+c2V0U2hhZG93UHNldWRvSWQoIi13
ZWJraXQtdGV4dGZpZWxkLWRlY29yYXRpb24tY29udGFpbmVyIik7CiAgICAgc2hhZG93Um9vdC0+
YXBwZW5kQ2hpbGQobV9jb250YWluZXIsIGVjKTsKQEAgLTM2Nyw3ICszNjcsNyBAQCB2b2lkIFRl
eHRGaWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkKICAgICBpZiAoIW1fcGxh
Y2Vob2xkZXIpIHsKICAgICAgICAgbV9wbGFjZWhvbGRlciA9IEhUTUxEaXZFbGVtZW50OjpjcmVh
dGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKTsKICAgICAgICAgbV9wbGFjZWhvbGRlci0+c2V0U2hh
ZG93UHNldWRvSWQoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiKTsKLSAgICAgICAgZWxlbWVu
dCgpLT5zaGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBtX2NvbnRhaW5l
ciA/IG1fY29udGFpbmVyLT5uZXh0U2libGluZygpIDogaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0
U2libGluZygpLCBlYyk7CisgICAgICAgIGVsZW1lbnQoKS0+YnVpbHRpblNoYWRvd1Jvb3QoKS0+
aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIG1fY29udGFpbmVyID8gbV9jb250YWluZXItPm5l
eHRTaWJsaW5nKCkgOiBpbm5lclRleHRFbGVtZW50KCktPm5leHRTaWJsaW5nKCksIGVjKTsKICAg
ICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4
dChwbGFjZWhvbGRlclRleHQsIGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VmFsaWRhdGlvbk1lc3NhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVz
c2FnZS5jcHAKaW5kZXggYmMzYzQ1NC4uZDYxMDFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9W
YWxpZGF0aW9uTWVzc2FnZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIFZhbGlkYXRpb25N
ZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKICAgICAv
LyBjb250YWlucyBub24tYWJzb2x1dGUgb3Igbm9uLWZpeGVkIHJlbmRlcmVycyBhcyBjaGlsZHJl
bi4KICAgICBtX2J1YmJsZS0+ZW5zdXJlSW5saW5lU3R5bGVEZWNsKCktPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGhvc3QtPmVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQobV9idWJi
bGUuZ2V0KCksIGVjKTsKKyAgICBob3N0LT5lbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBl
bmRDaGlsZChtX2J1YmJsZS5nZXQoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwogICAgIGFkanVz
dEJ1YmJsZVBvc2l0aW9uKGhvc3QtPmdldFJlY3QoKSwgbV9idWJibGUuZ2V0KCkpOwogCkBAIC0x
ODcsNyArMTg3LDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6ZGVsZXRlQnViYmxlVHJlZShU
aW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4qKQogICAgICAgICBtX21lc3NhZ2VCb2R5ID0gMDsKICAg
ICAgICAgSFRNTEVsZW1lbnQqIGhvc3QgPSB0b0hUTUxFbGVtZW50KG1fZWxlbWVudCk7CiAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIGhvc3QtPnNoYWRvd1Jvb3QoKS0+cmVtb3Zl
Q2hpbGQobV9idWJibGUuZ2V0KCksIGVjKTsKKyAgICAgICAgaG9zdC0+YnVpbHRpblNoYWRvd1Jv
b3QoKS0+cmVtb3ZlQ2hpbGQobV9idWJibGUuZ2V0KCksIGVjKTsKICAgICAgICAgbV9idWJibGUg
PSAwOwogICAgIH0KICAgICBtX21lc3NhZ2UgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCmluZGV4IDMxOWExMWUuLmY5
ZjI3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1i
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJF
bGVtZW50LmNwcApAQCAtNjYsNyArNjYsNyBAQCBpbmxpbmUgc3RhdGljIGJvb2wgaGFzVmVydGlj
YWxBcHBlYXJhbmNlKEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0KQogU2xpZGVyVGh1bWJFbGVtZW50
KiBzbGlkZXJUaHVtYkVsZW1lbnRPZihOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsK
LSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVudCgpLT5zaGFkb3dS
b290KCk7CisgICAgU2hhZG93Um9vdCogc2hhZG93ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+
YnVpbHRpblNoYWRvd1Jvb3QoKTsKICAgICBBU1NFUlQoc2hhZG93KTsKICAgICBOb2RlKiB0aHVt
YiA9IHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKTsKICAg
ICBBU1NFUlQodGh1bWIpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyQ29u
dGFpbmVyOjpsYXlvdXQoKQogICAgIExlbmd0aCBpbnB1dEhlaWdodCA9IGlucHV0LT5yZW5kZXJl
cigpLT5zdHlsZSgpLT5oZWlnaHQoKTsKICAgICBSZW5kZXJPYmplY3QqIHRyYWNrUmVuZGVyZXIg
PSBub2RlKCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIWlzVmVydGljYWwg
JiYgaW5wdXQtPnJlbmRlcmVyKCktPmlzU2xpZGVyKCkgJiYgIWlucHV0SGVpZ2h0LmlzRml4ZWQo
KSAmJiAhaW5wdXRIZWlnaHQuaXNQZXJjZW50KCkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiB0
aHVtYlJlbmRlcmVyID0gaW5wdXQtPnNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENo
aWxkKCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiB0
aHVtYlJlbmRlcmVyID0gaW5wdXQtPmJ1aWx0aW5TaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+
Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmICh0aHVt
YlJlbmRlcmVyKSB7CiAgICAgICAgICAgICBzdHlsZSgpLT5zZXRIZWlnaHQodGh1bWJSZW5kZXJl
ci0+c3R5bGUoKS0+aGVpZ2h0KCkpOwogICAgICAgICAgICAgaWYgKHRyYWNrUmVuZGVyZXIpCkBA
IC0zNTUsNyArMzU1LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUcmFja0xpbWl0ZXJFbGVtZW50
OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiBUcmFja0xpbWl0ZXJFbGVtZW50KiB0cmFja0xpbWl0
ZXJFbGVtZW50T2YoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgU2hhZG93
Um9vdCogc2hhZG93ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKS0+c2hhZG93Um9vdCgpOworICAg
IEJ1aWx0aW5TaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVudCgpLT5idWls
dGluU2hhZG93Um9vdCgpOwogICAgIEFTU0VSVChzaGFkb3cpOwogICAgIE5vZGUqIGxpbWl0ZXIg
PSBzaGFkb3ctPmZpcnN0Q2hpbGQoKS0+bGFzdENoaWxkKCk7CiAgICAgQVNTRVJUKGxpbWl0ZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29u
dHJvbC5jcHAKaW5kZXggYTFhZTE1Yi4uYTM4MWNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCkBAIC0yMTIsOSArMjEy
LDkgQEAgSFRNTElucHV0RWxlbWVudCogUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OnVwbG9hZEJ1
dHRvbigpIGNvbnN0CiB7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4obm9kZSgpKTsKIAotICAgIEFTU0VSVChpbnB1dC0+c2hhZG93
Um9vdCgpKTsKKyAgICBBU1NFUlQoaW5wdXQtPmJ1aWx0aW5TaGFkb3dSb290KCkpOwogCi0gICAg
Tm9kZSogYnV0dG9uTm9kZSA9IGlucHV0LT5zaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKTsKKyAg
ICBOb2RlKiBidXR0b25Ob2RlID0gaW5wdXQtPmJ1aWx0aW5TaGFkb3dSb290KCktPmZpcnN0Q2hp
bGQoKTsKICAgICByZXR1cm4gYnV0dG9uTm9kZSAmJiBidXR0b25Ob2RlLT5pc0hUTUxFbGVtZW50
KCkgJiYgYnV0dG9uTm9kZS0+aGFzVGFnTmFtZShpbnB1dFRhZykgPyBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oYnV0dG9uTm9kZSkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RS
ZWZFbGVtZW50LmNwcAppbmRleCAzMDBiOGM5Li43NjA0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5jcHAKQEAgLTE1MiwxMCArMTUyLDEwIEBAIHZvaWQgU1ZHVFJlZkVsZW1l
bnQ6OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KCkKICAgICBpZiAodGFyZ2V0LT5wYXJlbnROb2RlKCkp
CiAgICAgICAgIHRleHRDb250ZW50ID0gdGFyZ2V0LT50ZXh0Q29udGVudCgpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgaWdub3JlID0gMDsKLSAgICBpZiAoIWVuc3VyZVNoYWRvd1Jvb3QoKS0+Zmlyc3RD
aGlsZCgpKQotICAgICAgICBzaGFkb3dSb290KCktPmFwcGVuZENoaWxkKFNWR1NoYWRvd1RleHQ6
OmNyZWF0ZShkb2N1bWVudCgpLCB0ZXh0Q29udGVudCksIGlnbm9yZSk7CisgICAgaWYgKCFlbnN1
cmVCdWlsdGluU2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpCisgICAgICAgIGJ1aWx0aW5TaGFk
b3dSb290KCktPmFwcGVuZENoaWxkKFNWR1NoYWRvd1RleHQ6OmNyZWF0ZShkb2N1bWVudCgpLCB0
ZXh0Q29udGVudCksIGlnbm9yZSk7CiAgICAgZWxzZQotICAgICAgICBzaGFkb3dSb290KCktPmZp
cnN0Q2hpbGQoKS0+c2V0VGV4dENvbnRlbnQodGV4dENvbnRlbnQsIGlnbm9yZSk7CisgICAgICAg
IGJ1aWx0aW5TaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+c2V0VGV4dENvbnRlbnQodGV4dENv
bnRlbnQsIGlnbm9yZSk7CiB9CiAKIGJvb2wgU1ZHVFJlZkVsZW1lbnQ6OmlzU3VwcG9ydGVkQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDZkMTUxNDEuLmFhMmJjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTE1Nyw2ICsxNTcsMTcgQEAgYm9vbCBJbnRlcm5hbHM6OmlzVmFs
aWRDb250ZW50U2VsZWN0KEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICByZXR1cm4gdG9IVE1MQ29udGVudEVsZW1lbnQoY29udGVudEVsZW1lbnQpLT5pc1Nl
bGVjdFZhbGlkKCk7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjppc0J1aWx0aW5TaGFkb3dSb290KE5v
ZGUqIHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2hhZG93Um9v
dCB8fCAhc2hhZG93Um9vdC0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIH0KKworICAgIHJldHVy
biB0b1NoYWRvd1Jvb3Qoc2hhZG93Um9vdCktPmlzQnVpbHRpbigpOworfQorCiBTdHJpbmcgSW50
ZXJuYWxzOjplbGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKICAgICBpZiAoIWVsZW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5oCmluZGV4IGI4NzI1MzEuLjNjNTI1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaApAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBj
cmVhdGVDb250ZW50RWxlbWVudChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBFbGVt
ZW50KiBnZXRFbGVtZW50QnlJZEluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBjb25zdCBT
dHJpbmcmIGlkLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBpc1ZhbGlkQ29udGVudFNlbGVj
dChFbGVtZW50KiBjb250ZW50RWxlbWVudCwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgaXNC
dWlsdGluU2hhZG93Um9vdChOb2RlKiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJik7CiAKICNp
ZiBFTkFCTEUoSU5QVVRfQ09MT1IpCiAgICAgdm9pZCBzZWxlY3RDb2xvckluQ29sb3JDaG9vc2Vy
KEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGNvbG9yVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGRhMDgxZjUuLjk4MTE4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKQEAgLTQ1LDYgKzQ1LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAg
IEVsZW1lbnQgY3JlYXRlQ29udGVudEVsZW1lbnQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICBFbGVtZW50IGdldEVsZW1lbnRCeUlkSW5TaGFkb3dS
b290KGluIE5vZGUgc2hhZG93Um9vdCwgaW4gRE9NU3RyaW5nIGlkKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ZhbGlkQ29udGVudFNlbGVjdChpbiBFbGVtZW50IGNv
bnRlbnRFbGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgYm9vbGVhbiBpc0J1
aWx0aW5TaGFkb3dSb290KGluIE5vZGUgc2hhZG93Um9vdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCiAjaWYgZGVmaW5lZChFTkFCTEVfSU5QVVRfQ09MT1IpICYmIEVOQUJMRV9JTlBVVF9DT0xP
UgogICAgICAgICB2b2lkIHNlbGVjdENvbG9ySW5Db2xvckNob29zZXIoaW4gRWxlbWVudCBlbGVt
ZW50LCBpbiBET01TdHJpbmcgY29sb3JWYWx1ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125579</attachid>
            <date>2012-02-05 23:17:34 -0800</date>
            <delta_ts>2012-02-08 09:19:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>41513</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0MjFhNDg4Li5kZmJlOTIw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTItMDItMDUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBJbnRyb2R1Y2VzIEJ1aWx0aW5TaGFkb3dSb290IGFuZCBtZXRob2RzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2MTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVzIEVsZW1lbnQ6OmVu
c3VyZVNoYWRvd1Jvb3QoKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXI6CisKIDIwMTItMDItMDUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5n
LmNvbT4KIAogICAgICAgICBbQ01BS0VdIFN1cHBvcnQgamF2YXNjcmlwdGNvcmUgdGVzdCBmb3Ig
RUZMIHBvcnQuIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDAyMTU1ZjkuLjRiYTU0OTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxMi0wMi0wNSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29tPgorCisg
ICAgICAgIEludHJvZHVjZXMgQnVpbHRpblNoYWRvd1Jvb3QgYW5kIG1ldGhvZHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjYxMAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgbmV3IHRlc3QgaXMgc2tp
cHBlZCBleGNlcHQgY2hyb21pdW0gcG9ydCwgYmVjYXVzZSBTSEFET1dfRE9NIGZsYWcgaXMgbm90
IHNldCBvbiB0aGVtLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2J1aWx0aW4t
c2hhZG93Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0v
d2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKwogMjAx
Mi0wMi0wNSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlYmFz
ZWxpbmUgeHNzLWluYWN0aXZlLWNsb3N1cmUuaHRtbC4gIFRoaXMgdGVzdCAiZmFpbHMiIGJlY2F1
c2Ugb2YgYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2J1aWx0aW4t
c2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9idWlsdGlu
LXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MjgyOTEyYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9i
dWlsdGluLXNoYWRvdy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1MiBAQAorVGVzdHMgdG8gZW5z
dXJlIHRoYXQgYnVpbHQtaW4gc2hhZG93IHJvb3QgaXMgbm90IG92ZXJyaWRlbgorCitPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCisKKworREVUQUlMUworUEFTUyBpbnRlcm5hbHMuaXNCdWlsdGlu
U2hhZG93Um9vdChpbnRlcm5hbHMuc2hhZG93Um9vdChlbGVtKSkgaXMgdHJ1ZQorUEFTUyBuZXcg
V2ViS2l0U2hhZG93Um9vdChlbGVtKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEhJRVJBUkNIWV9S
RVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlvbiAzLgorTUVURVIKK1BBU1MgaW50ZXJuYWxzLmlzQnVp
bHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSkpIGlzIHRydWUKK1BBU1Mg
bmV3IFdlYktpdFNoYWRvd1Jvb3QoZWxlbSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBISUVSQVJD
SFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMy4KK1BST0dSRVNTCitQQVNTIGludGVybmFs
cy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFkb3dSb290KGVsZW0pKSBpcyB0cnVl
CitQQVNTIG5ldyBXZWJLaXRTaGFkb3dSb290KGVsZW0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
SElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9uIDMuCitTVU1NQVJZCitQQVNTIGlu
dGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFkb3dSb290KGVsZW0pKSBp
cyB0cnVlCitQQVNTIG5ldyBXZWJLaXRTaGFkb3dSb290KGVsZW0pIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBET00gRXhjZXB0aW9uIDMuCitURVhUQVJFQQor
UEFTUyBpbnRlcm5hbHMuaXNCdWlsdGluU2hhZG93Um9vdChpbnRlcm5hbHMuc2hhZG93Um9vdChl
bGVtKSkgaXMgdHJ1ZQorUEFTUyBuZXcgV2ViS2l0U2hhZG93Um9vdChlbGVtKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlvbiAzLgorSU5Q
VVQKK1BBU1MgaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jv
b3QoZWxlbSkpIGlzIHRydWUKK1BBU1MgbmV3IFdlYktpdFNoYWRvd1Jvb3QoZWxlbSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBFeGNlcHRpb24gMy4K
K0tFWUdFTgorUEFTUyBpbnRlcm5hbHMuaXNCdWlsdGluU2hhZG93Um9vdChpbnRlcm5hbHMuc2hh
ZG93Um9vdChlbGVtKSkgaXMgdHJ1ZQorUEFTUyBuZXcgV2ViS2l0U2hhZG93Um9vdChlbGVtKSB0
aHJldyBleGNlcHRpb24gRXJyb3I6IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogRE9NIEV4Y2VwdGlv
biAzLgorVklERU8KK1BBU1MgaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxz
LnNoYWRvd1Jvb3QoZWxlbSkpIGlzIHRydWUKK1BBU1MgbmV3IFdlYktpdFNoYWRvd1Jvb3QoZWxl
bSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IERPTSBFeGNl
cHRpb24gMy4KK0FVRElPCitQQVNTIGludGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVy
bmFscy5zaGFkb3dSb290KGVsZW0pKSBpcyB0cnVlCitQQVNTIG5ldyBXZWJLaXRTaGFkb3dSb290
KGVsZW0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSElFUkFSQ0hZX1JFUVVFU1RfRVJSOiBET00g
RXhjZXB0aW9uIDMuCitESVYKK1BBU1Mgcm9vdCBpcyBudWxsCitQQVNTIHJvb3QgIT0gbnVsbCBp
cyB0cnVlCitQQVNTIGludGVybmFscy5pc0J1aWx0aW5TaGFkb3dSb290KGludGVybmFscy5zaGFk
b3dSb290KGVsZW0pKSBpcyBmYWxzZQorU1BBTgorUEFTUyByb290IGlzIG51bGwKK1BBU1Mgcm9v
dCAhPSBudWxsIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jvb3QoaW50
ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSkpIGlzIGZhbHNlCitBCitQQVNTIHJvb3QgaXMgbnVsbAor
UEFTUyByb290ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaXNCdWlsdGluU2hhZG93
Um9vdChpbnRlcm5hbHMuc2hhZG93Um9vdChlbGVtKSkgaXMgZmFsc2UKK0ZPT1RFUgorUEFTUyBy
b290IGlzIG51bGwKK1BBU1Mgcm9vdCAhPSBudWxsIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmlz
QnVpbHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSkpIGlzIGZhbHNlCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvYnVpbHRpbi1zaGFkb3cuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWE3NTdhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93Lmh0bWwKQEAgLTAsMCArMSw3
NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgdG8gZW5zdXJlIHRoYXQgYnVpbHQtaW4gc2hhZG93
IHJvb3QgaXMgbm90IG92ZXJyaWRlbiIpOworCitmdW5jdGlvbiB0ZXN0QnVpbHRpbihlbGVtKSB7
CisgICAgZGVidWcoZWxlbS50YWdOYW1lKTsKKworICAgIHZhciByb290ID0gaW50ZXJuYWxzLnNo
YWRvd1Jvb3QoZWxlbSk7CisgICAgd2luZG93LmVsZW0gPSBlbGVtOworICAgIHNob3VsZEJlVHJ1
ZSgiaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jvb3QoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxl
bSkpIik7CisKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIGRvbid0IHN1cHBvcnQgbXVsdGlw
bGUgc2hhZG93IHN1YnRyZWVzLCB0aGlzIHN0YXRlbWVudCBzaG91bGQgdGhyb3cgYW4gZXJyb3Iu
CisgICAgc2hvdWxkVGhyb3coIm5ldyBXZWJLaXRTaGFkb3dSb290KGVsZW0pIik7Cit9CisKK2Z1
bmN0aW9uIHRlc3RBZGRTaGFkb3coZWxlbSkgeworICAgIGRlYnVnKGVsZW0udGFnTmFtZSk7CisK
KyAgICByb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSk7CisgICAgc2hvdWxkQmUoInJv
b3QiLCAibnVsbCIpOworCisgICAgcm9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGVsZW0pOwor
ICAgIHNob3VsZEJlVHJ1ZSgicm9vdCAhPSBudWxsIik7CisKKyAgICAvLyBBIG5ldyBzaGFkb3cg
cm9vdCBzaG91bGQgbm90IGJlIGEgYnVpbHRpbiBzaGFkb3cgcm9vdC4KKyAgICB3aW5kb3cuZWxl
bSA9IGVsZW07CisgICAgc2hvdWxkQmVGYWxzZSgiaW50ZXJuYWxzLmlzQnVpbHRpblNoYWRvd1Jv
b3QoaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZWxlbSkpIik7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKK2Z1bmN0aW9uIHRlc3RHZW5lcmFsRWxlbWVudHMoKSB7CisgICAgdmFyIG5h
bWVzID0gWworICAgICAgICAiZGV0YWlscyIsICJtZXRlciIsICJwcm9ncmVzcyIsICJzdW1tYXJ5
IiwgInRleHRhcmVhIiwgImlucHV0IiwgImtleWdlbiIsCisgICAgXTsKKworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgIHRlc3RCdWlsdGluKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQobmFtZXNbaV0pKTsKK30KKworZnVuY3Rpb24gdGVzdE1lZGlhQ29u
dHJvbCgpIHsKKyAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd2aWRlbycp
OworICAgIHZpZGVvLmNvbnRyb2xzID0gdHJ1ZTsKKyAgICB0ZXN0QnVpbHRpbih2aWRlbyk7CisK
KyAgICB2YXIgYXVkaW8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhdWRpbycpOworICAgIGF1
ZGlvLmNvbnRyb2xzID0gdHJ1ZTsKKyAgICB0ZXN0QnVpbHRpbihhdWRpbyk7Cit9CisKK2Z1bmN0
aW9uIHRlc3RFbGVtZW50c05vdEhhdmluZ1NoYWRvd1Jvb3QoKSB7CisgICAgdmFyIG5hbWVzID0g
WyAiZGl2IiwgInNwYW4iLCAiYSIsICJmb290ZXIiIF07CisKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IG5hbWVzLmxlbmd0aDsgKytpKQorICAgICAgICB0ZXN0QWRkU2hhZG93KGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQobmFtZXNbaV0pKTsKK30KKwordGVzdEdlbmVyYWxFbGVtZW50cygpOwordGVz
dE1lZGlhQ29udHJvbCgpOwordGVzdEVsZW1lbnRzTm90SGF2aW5nU2hhZG93Um9vdCgpOworCit2
YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCA0MDA0YTA5Li4zOWJlY2ZlIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTkzOCw2ICsxOTM4LDcgQEAgZmFzdC9jc3Mvc3R5
bGUtc2NvcGVkCiAKICMgRU5BQkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCitmYXN0L2RvbS9zaGFkb3cvYnVpbHRpbi1z
aGFkb3cuaHRtbAogCiAjIENTUyBGaWx0ZXJzIHN1cHBvcnQgbm90IHlldCBlbmFibGVkIChuZWVk
cyBFTkFCTEVfQ1NTX0ZJTFRFUlMpLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0NjkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggMTNlNjFhYy4uODEw
NDM4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM1MSw2ICszNTEsNyBAQCBmYXN0
L2Nzcy9zdHlsZS1zY29wZWQKIAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9i
dWlsdGluLXNoYWRvdy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJs
ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZAppbmRleCA5ODY1NzMwLi41MDZiNmVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZApAQCAtNDE2LDYgKzQxNiw3IEBAIGZhc3QvY3NzL3N0eWxlLXNjb3BlZAogCiAjIEVOQUJM
RShTSEFET1dfRE9NKSBpcyBkaXNhYmxlZC4KIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1q
cy1hcGkuaHRtbAorZmFzdC9kb20vc2hhZG93L2J1aWx0aW4tc2hhZG93Lmh0bWwKIAogIyBKU0Mg
ZG9lcyBub3Qgc3VwcG9ydCBzZXRJc29sYXRlZFdvcmxkU2VjdXJpdHlPcmlnaW4gKGh0dHA6Ly93
ZWJraXQub3JnL2IvNjE1NDApCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2lzb2xhdGVkV29ybGQvY3Jv
c3Mtb3JpZ2luLXhoci5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAppbmRleCBiYjUzNTkyLi4w
NDc0ZjBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKQEAgLTE1OSw2ICsxNTksNyBAQCBmYXN0
L2Nzcy9zdHlsZS1zY29wZWQKIAogIyBFTkFCTEUoU0hBRE9XX0RPTSkgaXMgZGlzYWJsZWQuCiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9i
dWlsdGluLXNoYWRvdy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJs
ZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAppbmRleCBmZDEwMDBhLi5kODU5YzA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZApAQCAtMTQzOSw2ICsxNDM5LDcgQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiAKICMgRU5B
QkxFKFNIQURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS5odG1sCitmYXN0L2RvbS9zaGFkb3cvYnVpbHRpbi1zaGFkb3cuaHRtbAogCiAjIENT
UyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3
MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4
IDVmZjc5YjUuLmZmOGM0NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApA
QCAtMTk2Myw2ICsxOTYzLDcgQEAgZmFzdC9jc3Mvc3R5bGUtc2NvcGVkCiAKICMgRU5BQkxFKFNI
QURPV19ET00pIGlzIGRpc2FibGVkLgogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFw
aS5odG1sCitmYXN0L2RvbS9zaGFkb3cvYnVpbHRpbi1zaGFkb3cuaHRtbAogCiAjIENTUyBSZWdp
b25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBm
YXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5NDY5ZmQ1Li44YTdjM2ZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsOTggQEAKKzIwMTItMDItMDUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2VzIEJ1aWx0aW5TaGFkb3dSb290IGFuZCBtZXRo
b2RzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2
MTAKKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBidWlsdC1pbiBzaGFkb3cgcm9v
dCwgd2hpY2ggaXMgYSBzaGFkb3cgcm9vdCB1c2VkIGludGVybmFsbHkuCisgICAgICAgIFdoZW4g
c3VwcG9ydGluZyBhIG11bHRpcGxlIHNoYWRvdyBzdWJ0cmVzcywgZWxlbWVudHMgd2FudCB0byB0
YWtlIGl0cyBpbnRlcm5hbCBzaGFkb3cgcm9vdCBpbnN0ZWFkIG9mCisgICAgICAgIG9uZSBnZW5l
cmF0ZWQgYnkgdXNlcnMuIE1ldGhvZCBsaWtlIGJ1aWx0aW5TaGFkb3dSb290KCkgZW5hYmxlcyB1
cyB0byBkbyBpdC4KKworICAgICAgICBERVRBSUxTLCBTVU1NQVJZLCBWSURFTywgYW5kIG1vcmUg
ZWxlbWVudCBoYXZlIHRoaXMga2luZCBvZiBpbnRlcm5hbCBidWlsdGluIHNoYWRvdyByb290Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL3NoYWRvdy9idWlsdGluLXNoYWRvdy5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgICBSZW1vdmVzIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKS4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpidWls
dGluU2hhZG93Um9vdCk6CisgICAgICAgICAgR2V0cyBhIGJ1aWx0aW4gc2hhZG93IHJvb3QgaWYg
YW55LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0QnVpbHRpblNoYWRvd1Jvb3QpOgor
ICAgICAgICAgIFNldHMgYSBidWlsdGluIHNoYWRvdyByb290LiBDdXJyZW50bHkgaWYgYSBzaGFk
b3cgcm9vdCBleGlzdHMgYWxyZWFkeSwgdGhpcyBtZXRob2Qgd2lsbCBub3QgZG8gYW55dGhpbmcu
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVCdWlsdGluU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVCdWlsdGluU2hhZG93Um9vdCk6CisgICAg
ICAgICAgUmVtb3ZlcyBhIGJ1aWx0aW4gc2hhZG93IHJvb3QuCisgICAgICAgICogZG9tL0VsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRWxlbWVudCk6CisgICAgICAgICog
ZG9tL1NoYWRvd1Jvb3QuY3BwOgorICAgICAgICAgIEludHJvZHVjZXMgYSBidWlsdGluIHNoYWRv
dyByb290LgorICAgICAgICAoV2ViQ29yZTo6QnVpbHRpblNoYWRvd1Jvb3Q6OkJ1aWx0aW5TaGFk
b3dSb290KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QnVpbHRpblNo
YWRvd1Jvb3Q6On5CdWlsdGluU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlOjpCdWlsdGlu
U2hhZG93Um9vdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJ1aWx0aW5TaGFkb3dSb290
Ojppc0J1aWx0aW4pOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSb290Ojppc0J1aWx0aW4pOgorICAgICAgICAoU2hhZG93Um9vdCk6CisgICAg
ICAgIChCdWlsdGluU2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJ1aWx0aW5TaGFkb3dSb290OjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwOgorICAgICAgICAgIFVzZXMgYnVpbHRpblNoYWRvd1Jvb3QoKSBtZXRob2Qg
aW5zdGVhZCBvZiBzaGFkb3dSb290KCkuCisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlw
ZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlw
ZTo6c2hhZG93Q29sb3JTd2F0Y2gpOgorICAgICAgICAqIGh0bWwvRmlsZUlucHV0VHlwZS5jcHA6
IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RmlsZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlSW5wdXRUeXBlOjptdWx0aXBsZUF0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIGh0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcDogZGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERldGFpbHNFbGVtZW50OjpmaW5kTWFpblN1bW1h
cnkpOgorICAgICAgICAqIGh0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwOiBkaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MS2V5Z2VuRWxlbWVudDo6c2hhZG93U2VsZWN0KToKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhQ29udHJvbHMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6aGFzTWVkaWFDb250cm9scyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpjcmVhdGVNZWRpYUNvbnRyb2xzKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRl
ckVsZW1lbnQuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZXRlckVsZW1lbnQ6
OmNyZWF0ZVNoYWRvd1N1YnRyZWUpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxlbWVu
dC5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByb2dyZXNzRWxlbWVudDo6Y3Jl
YXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3Bw
OiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlU2hh
ZG93U3VidHJlZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50OjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OmlubmVyVGV4
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRl
UGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpkZXN0cm95U2hhZG93U3VidHJlZSk6CisgICAg
ICAgICogaHRtbC9SYW5nZUlucHV0VHlwZS5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UmFuZ2VJbnB1dFR5cGU6OmhhbmRsZU1vdXNlRG93bkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJhbmdlSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKiBodG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHA6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZpZWxk
SW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRG
aWVsZElucHV0VHlwZTo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0KToKKyAgICAgICAgKiBodG1sL1Zh
bGlkYXRpb25NZXNzYWdlLmNwcDogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9u
TWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkYXRpb25N
ZXNzYWdlOjpkZWxldGVCdWJibGVUcmVlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnNsaWRlclRodW1iRWxl
bWVudE9mKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNsaWRlckNvbnRhaW5lcjo6bGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OnRyYWNrTGltaXRlckVsZW1lbnRPZik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcDogZGl0dG8uCisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGaWxlVXBsb2FkQ29udHJvbDo6dXBsb2FkQnV0dG9uKToKKyAgICAgICAg
KiBzdmcvU1ZHVFJlZkVsZW1lbnQuY3BwOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1RS
ZWZFbGVtZW50Ojp1cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjppc0J1aWx0aW5TaGFkb3dS
b290KToKKyAgICAgICAgICBDaGVja3MgYSBzaGFkb3cgcm9vdCBpcyBidWlsdGluIG9yIG5vdC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAg
ICAgIChJbnRlcm5hbHMpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAx
Mi0wMi0wNSAgQW5kcmVhcyBLbGluZyAgPGF3ZXNvbWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIHVudXNlZCBmaWxlIE1hcHBlZEF0dHJpYnV0ZUVudHJ5LmguCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGI2ZjAwMDkuLjRiOGQ4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04
OTksNyArODk5LDYgQEAgX19aTjdXZWJDb3JlNldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05v
ZGVFTjNKU0M3SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2Vw
dGlvbnNFdgogX19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0Vi
Ci1fX1pON1dlYkNvcmU3RWxlbWVudDE2ZW5zdXJlU2hhZG93Um9vdEV2CiBfX1pON1dlYkNvcmU3
RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDIxYm91bmRz
SW5Sb290Vmlld1NwYWNlRXYKIF9fWk43V2ViQ29yZTdFbGVtZW50OWlubmVyVGV4dEV2CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggZjk3YjVlMi4uNmMzN2IwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcApAQCAtMTE5NCwxNyArMTE5NCw2IEBAIHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQ
YXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHBycFNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmCiAgICAg
fQogfQogCi1TaGFkb3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKLXsKLSAgICBp
ZiAoU2hhZG93Um9vdCogZXhpc3RpbmdSb290ID0gc2hhZG93Um9vdCgpKQotICAgICAgICByZXR1
cm4gZXhpc3RpbmdSb290OwotCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2V0U2hh
ZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjKTsKLSAgICBBU1NFUlQo
IWVjKTsKLSAgICByZXR1cm4gc2hhZG93Um9vdCgpOwotfQotCiB2b2lkIEVsZW1lbnQ6OnJlbW92
ZVNoYWRvd1Jvb3QoKQogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkKQEAgLTEyMzMsNiArMTIy
Miw0MSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3QoKQogICAgIH0KIH0KIAorQnVp
bHRpblNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmJ1aWx0aW5TaGFkb3dSb290KCkgY29uc3QKK3sKKyAg
ICBTaGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdCgpOworICAgIGlmIChyb290ICYmIHJvb3Qt
PmlzQnVpbHRpbigpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QnVpbHRpblNoYWRvd1Jv
b3QqPihyb290KTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIEVsZW1lbnQ6OnNldEJ1aWx0
aW5TaGFkb3dSb290KFBhc3NSZWZQdHI8QnVpbHRpblNoYWRvd1Jvb3Q+IHJvb3QsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIC8vIEZJWE1FOiBTaW5jZSB3ZSBkb24ndCBzdXBwb3J0IG11bHRp
cGxlIHlldCwgd2UgY29uZmlybSB0aGF0IGEgc2hhZG93IHJvb3QgZG9lcyBub3QgZXhpc3Qgbm93
LgorICAgIEFTU0VSVCghc2hhZG93Um9vdCgpKTsKKworICAgIHNldFNoYWRvd1Jvb3Qocm9vdCwg
ZWMpOworfQorCitCdWlsdGluU2hhZG93Um9vdCogRWxlbWVudDo6ZW5zdXJlQnVpbHRpblNoYWRv
d1Jvb3QoKQoreworICAgIGlmIChCdWlsdGluU2hhZG93Um9vdCogZXhpc3RpbmdSb290ID0gYnVp
bHRpblNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nUm9vdDsKKworICAgIC8v
IEZJWE1FOiBTaW5jZSB3ZSBkb24ndCBzdXBwb3J0IG11bHRpcGxlIHlldCwgd2UgY29uZmlybSB0
aGF0IGEgc2hhZG93IHJvb3QgZG9lcyBub3QgZXhpc3Qgbm93LgorICAgIEFTU0VSVCghc2hhZG93
Um9vdCgpKTsKKworICAgIHNldEJ1aWx0aW5TaGFkb3dSb290KEJ1aWx0aW5TaGFkb3dSb290Ojpj
cmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHJldHVybiBidWls
dGluU2hhZG93Um9vdCgpOworfQorCit2b2lkIEVsZW1lbnQ6OnJlbW92ZUJ1aWx0aW5TaGFkb3dS
b290KCkKK3sKKyAgICBpZiAoc2hhZG93Um9vdCgpICYmIHNoYWRvd1Jvb3QoKS0+aXNCdWlsdGlu
KCkpCisgICAgICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKK30KKwogY29uc3QgQXRvbWljU3RyaW5n
JiBFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc1JhcmVE
YXRhKCkgPyByYXJlRGF0YSgpLT5tX3NoYWRvd1BzZXVkb0lkIDogbnVsbEF0b207CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuaAppbmRleCBhYzI4MWM1Li5mMjVjNDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM1
LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXR0cmlidXRlOworY2xh
c3MgQnVpbHRpblNoYWRvd1Jvb3Q7CiBjbGFzcyBDbGllbnRSZWN0OwogY2xhc3MgQ2xpZW50UmVj
dExpc3Q7CiBjbGFzcyBET01TdHJpbmdNYXA7CkBAIC0yNDMsOSArMjQ0LDEzIEBAIHB1YmxpYzoK
IAogICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRv
d1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIFNoYWRv
d1Jvb3QqIGVuc3VyZVNoYWRvd1Jvb3QoKTsKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsK
IAorICAgIEJ1aWx0aW5TaGFkb3dSb290KiBidWlsdGluU2hhZG93Um9vdCgpIGNvbnN0OworICAg
IHZvaWQgc2V0QnVpbHRpblNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxCdWlsdGluU2hhZG93Um9vdD4s
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBCdWlsdGluU2hhZG93Um9vdCogZW5zdXJlQnVpbHRpblNo
YWRvd1Jvb3QoKTsKKyAgICB2b2lkIHJlbW92ZUJ1aWx0aW5TaGFkb3dSb290KCk7CisKICAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAgICB2
b2lkIHNldFNoYWRvd1BzZXVkb0lkKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
ID0gQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCA5YmE2OGJkLi45YzllMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0yMTUs
NSArMjE1LDM4IEBAIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvciogU2hhZG93Um9vdDo6ZW5zdXJl
SW5jbHVzaW9ucygpCiAgICAgcmV0dXJuIG1faW5jbHVzaW9ucy5nZXQoKTsKIH0KIAorQnVpbHRp
blNoYWRvd1Jvb3Q6OkJ1aWx0aW5TaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6
IFNoYWRvd1Jvb3QoZG9jdW1lbnQpCit7Cit9CisKK0J1aWx0aW5TaGFkb3dSb290Ojp+QnVpbHRp
blNoYWRvd1Jvb3QoKQoreworfQorCitQYXNzUmVmUHRyPEJ1aWx0aW5TaGFkb3dSb290PiBCdWls
dGluU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmICghZWxlbWVudCB8fCBlbGVtZW50LT5idWlsdGluU2hhZG93Um9vdCgpKSB7
CisgICAgICAgIGVjID0gSElFUkFSQ0hZX1JFUVVFU1RfRVJSOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIGRvbid0IHN1cHBvcnQgbXVsdGlw
bGUgc2hhZG93IHN1YnRyZWVzLiBTbyB3ZSBhc3N1cmUgdGhhdAorICAgIC8vIG5vIHNoYWRvdyBy
b290IGV4aXN0cyBvbiB0aGlzIGVsZW1lbnQuCisgICAgaWYgKGVsZW1lbnQtPnNoYWRvd1Jvb3Qo
KSkgeworICAgICAgICBlYyA9IEhJRVJBUkNIWV9SRVFVRVNUX0VSUjsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCisgICAgUmVmUHRyPEJ1aWx0aW5TaGFkb3dSb290PiBzaGFkb3dSb290ID0g
Y3JlYXRlKGVsZW1lbnQtPmRvY3VtZW50KCkpOworICAgIGVsZW1lbnQtPnNldEJ1aWx0aW5TaGFk
b3dSb290KHNoYWRvd1Jvb3QsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgcmV0dXJuIHNo
YWRvd1Jvb3QucmVsZWFzZSgpOworfQorCitib29sIEJ1aWx0aW5TaGFkb3dSb290Ojppc0J1aWx0
aW4oKSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaAppbmRleCBkMGIxODk0Li4xM2QwNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAg
LTQ4LDYgKzQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENo
aWxkcmVuQW5kU2hhZG93KCk7CiAgICAgYm9vbCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNCdWlsdGluKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKwogICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5jbHVkZXJGb3IoTm9kZSopIGNv
bnN0OwogICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIGJvb2wgaXNJbmNsdXNp
b25TZWxlY3RvckFjdGl2ZSgpIGNvbnN0OwpAQCAtNjMsMTAgKzY1LDExIEBAIHB1YmxpYzoKICAg
ICBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IqIGluY2x1c2lvbnMoKSBjb25zdDsKICAgICBDb250
ZW50SW5jbHVzaW9uU2VsZWN0b3IqIGVuc3VyZUluY2x1c2lvbnMoKTsKIAotcHJpdmF0ZToKK3By
b3RlY3RlZDoKICAgICBTaGFkb3dSb290KERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+U2hhZG93
Um9vdCgpOwogCitwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7
CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKQEAgLTEwMCw2ICsxMDMsMjMgQEAg
aW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChOb2RlKiBub2RlKQogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxTaGFkb3dSb290Kj4obm9kZSk7CiB9CiAKK2NsYXNzIEJ1aWx0aW5TaGFkb3dS
b290IDogcHVibGljIFNoYWRvd1Jvb3QgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEJ1aWx0aW5TaGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxCdWlsdGluU2hhZG93Um9vdD4gY3JlYXRlKEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNCdWlsdGluKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
QnVpbHRpblNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5CdWlsdGluU2hhZG93
Um9vdCgpOworfTsKKworaW5saW5lIFBhc3NSZWZQdHI8QnVpbHRpblNoYWRvd1Jvb3Q+IEJ1aWx0
aW5TaGFkb3dSb290OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQnVpbHRpblNoYWRvd1Jvb3QoZG9jdW1lbnQpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4
IDA3MWNjMzQuLmFhODVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
CkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd3JhcHBlckVsZW1lbnQtPmFw
cGVuZENoaWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgZWMpOwogICAgIEFTU0VSVCghZWMpOwot
ICAgIGVsZW1lbnQoKS0+ZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCh3cmFwcGVyRWxl
bWVudC5yZWxlYXNlKCksIGVjKTsKKyAgICBlbGVtZW50KCktPmVuc3VyZUJ1aWx0aW5TaGFkb3dS
b290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVtZW50LnJlbGVhc2UoKSwgZWMpOwogICAgIEFT
U0VSVCghZWMpOwogICAgIAogICAgIHVwZGF0ZUNvbG9yU3dhdGNoKCk7CkBAIC0xODMsNyArMTgz
LDcgQEAgdm9pZCBDb2xvcklucHV0VHlwZTo6dXBkYXRlQ29sb3JTd2F0Y2goKQogCiBIVE1MRWxl
bWVudCogQ29sb3JJbnB1dFR5cGU6OnNoYWRvd0NvbG9yU3dhdGNoKCkgY29uc3QKIHsKLSAgICBT
aGFkb3dSb290KiBzaGFkb3cgPSBlbGVtZW50KCktPnNoYWRvd1Jvb3QoKTsKKyAgICBCdWlsdGlu
U2hhZG93Um9vdCogc2hhZG93ID0gZWxlbWVudCgpLT5idWlsdGluU2hhZG93Um9vdCgpOwogICAg
IHJldHVybiBzaGFkb3cgPyB0b0hUTUxFbGVtZW50KHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5maXJz
dENoaWxkKCkpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5jcHAKaW5k
ZXggZWE5YTJlZS4uY2ViYzY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GaWxl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuY3Bw
CkBAIC0yNjYsMTIgKzI2NiwxMiBAQCBib29sIEZpbGVJbnB1dFR5cGU6OmlzRmlsZVVwbG9hZCgp
IGNvbnN0CiB2b2lkIEZpbGVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGVsZW1lbnQoKS0+ZW5zdXJlU2hhZG93Um9vdCgp
LT5hcHBlbmRDaGlsZChlbGVtZW50KCktPm11bHRpcGxlKCkgPyBVcGxvYWRCdXR0b25FbGVtZW50
OjpjcmVhdGVGb3JNdWx0aXBsZShlbGVtZW50KCktPmRvY3VtZW50KCkpOiBVcGxvYWRCdXR0b25F
bGVtZW50OjpjcmVhdGUoZWxlbWVudCgpLT5kb2N1bWVudCgpKSwgZWMpOworICAgIGVsZW1lbnQo
KS0+ZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoZWxlbWVudCgpLT5tdWx0
aXBsZSgpID8gVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlRm9yTXVsdGlwbGUoZWxlbWVudCgp
LT5kb2N1bWVudCgpKTogVXBsb2FkQnV0dG9uRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9j
dW1lbnQoKSksIGVjKTsKIH0KIAogdm9pZCBGaWxlSW5wdXRUeXBlOjptdWx0aXBsZUF0dHJpYnV0
ZUNoYW5nZWQoKQogewotICAgIFVwbG9hZEJ1dHRvbkVsZW1lbnQqIGJ1dHRvbiA9IHN0YXRpY19j
YXN0PFVwbG9hZEJ1dHRvbkVsZW1lbnQqPihlbGVtZW50KCktPmVuc3VyZVNoYWRvd1Jvb3QoKS0+
Zmlyc3RDaGlsZCgpKTsKKyAgICBVcGxvYWRCdXR0b25FbGVtZW50KiBidXR0b24gPSBzdGF0aWNf
Y2FzdDxVcGxvYWRCdXR0b25FbGVtZW50Kj4oZWxlbWVudCgpLT5lbnN1cmVCdWlsdGluU2hhZG93
Um9vdCgpLT5maXJzdENoaWxkKCkpOwogICAgIGlmIChidXR0b24pCiAgICAgICAgIGJ1dHRvbi0+
c2V0VmFsdWUoZWxlbWVudCgpLT5tdWx0aXBsZSgpID8gZmlsZUJ1dHRvbkNob29zZU11bHRpcGxl
RmlsZXNMYWJlbCgpIDogZmlsZUJ1dHRvbkNob29zZUZpbGVMYWJlbCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmNwcAppbmRleCAxN2Q4NmQyLi43NmJmZjQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuY3BwCkBAIC0xMDgs
OSArMTA4LDkgQEAgUmVuZGVyT2JqZWN0KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUKIAogdm9pZCBIVE1MRGV0YWlsc0Vs
ZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogewotICAgIEFTU0VSVCghc2hhZG93Um9vdCgp
KTsKLSAgICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKERldGFpbHNTdW1tYXJ5RWxl
bWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKLSAg
ICBlbnN1cmVTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKERldGFpbHNDb250ZW50RWxlbWVudDo6
Y3JlYXRlKGRvY3VtZW50KCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKKyAgICBBU1NF
UlQoIWJ1aWx0aW5TaGFkb3dSb290KCkpOworICAgIGVuc3VyZUJ1aWx0aW5TaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKERldGFpbHNTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OLCB0cnVlKTsKKyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9vdCgp
LT5hcHBlbmRDaGlsZChEZXRhaWxzQ29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwg
QVNTRVJUX05PX0VYQ0VQVElPTiwgdHJ1ZSk7CiB9CiAKIEVsZW1lbnQqIEhUTUxEZXRhaWxzRWxl
bWVudDo6ZmluZE1haW5TdW1tYXJ5KCkgY29uc3QKQEAgLTEyMCw3ICsxMjAsNyBAQCBFbGVtZW50
KiBIVE1MRGV0YWlsc0VsZW1lbnQ6OmZpbmRNYWluU3VtbWFyeSgpIGNvbnN0CiAgICAgICAgICAg
ICByZXR1cm4gdG9FbGVtZW50KGNoaWxkKTsKICAgICB9CiAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RGV0YWlsc1N1bW1hcnlFbGVtZW50Kj4oc2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpLT5m
YWxsYmFja1N1bW1hcnkoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGV0YWlsc1N1bW1hcnlF
bGVtZW50Kj4oYnVpbHRpblNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpKS0+ZmFsbGJhY2tTdW1t
YXJ5KCk7CiB9CiAKIHZvaWQgSFRNTERldGFpbHNFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRy
aWJ1dGUqIGF0dHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCmlu
ZGV4IDc3N2VlMTUuLjhhOWNmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVs
ZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIGlubGluZSBIVE1MS2V5Z2VuRWxlbWVudDo6SFRN
TEtleWdlbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lCiAgICAg
ICAgIG9wdGlvbi0+YXBwZW5kQ2hpbGQoVGV4dDo6Y3JlYXRlKGRvY3VtZW50LCBrZXlzW2ldKSwg
ZWMpOwogICAgIH0KIAotICAgIGVuc3VyZVNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoc2VsZWN0
LCBlYyk7CisgICAgZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoc2VsZWN0
LCBlYyk7CiB9CiAKIFBhc3NSZWZQdHI8SFRNTEtleWdlbkVsZW1lbnQ+IEhUTUxLZXlnZW5FbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0pCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBIVE1M
S2V5Z2VuRWxlbWVudDo6cmVzZXQoKQogCiBIVE1MU2VsZWN0RWxlbWVudCogSFRNTEtleWdlbkVs
ZW1lbnQ6OnNoYWRvd1NlbGVjdCgpIGNvbnN0CiB7Ci0gICAgU2hhZG93Um9vdCogc2hhZG93ID0g
c2hhZG93Um9vdCgpOworICAgIEJ1aWx0aW5TaGFkb3dSb290KiBzaGFkb3cgPSBidWlsdGluU2hh
ZG93Um9vdCgpOwogICAgIEFTU0VSVChzaGFkb3cpOwogICAgIHJldHVybiBzaGFkb3cgPyB0b0hU
TUxTZWxlY3RFbGVtZW50KHNoYWRvdy0+Zmlyc3RDaGlsZCgpKSA6IDA7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA3Nzc0MDRmNi4uNGNlNTY1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0zNTE0LDE1ICszNTE0
LDE1IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFu
Z2UoKQogCiBNZWRpYUNvbnRyb2xzKiBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNvbnRyb2xzKCkK
IHsKLSAgICByZXR1cm4gdG9NZWRpYUNvbnRyb2xzKHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgp
KTsKKyAgICByZXR1cm4gdG9NZWRpYUNvbnRyb2xzKGJ1aWx0aW5TaGFkb3dSb290KCktPmZpcnN0
Q2hpbGQoKSk7CiB9CiAKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzTWVkaWFDb250cm9scygp
CiB7Ci0gICAgaWYgKCFzaGFkb3dSb290KCkpCisgICAgaWYgKCFidWlsdGluU2hhZG93Um9vdCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBOb2RlKiBub2RlID0gc2hhZG93Um9vdCgp
LT5maXJzdENoaWxkKCk7CisgICAgTm9kZSogbm9kZSA9IGJ1aWx0aW5TaGFkb3dSb290KCktPmZp
cnN0Q2hpbGQoKTsKICAgICByZXR1cm4gbm9kZSAmJiBub2RlLT5pc01lZGlhQ29udHJvbHMoKTsK
IH0KIApAQCAtMzU0MSw3ICszNTQxLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVN
ZWRpYUNvbnRyb2xzKCkKICAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIGNvbnRyb2xz
LT5lbnRlcmVkRnVsbHNjcmVlbigpOwogCi0gICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRD
aGlsZChjb250cm9scywgZWMpOworICAgIGVuc3VyZUJ1aWx0aW5TaGFkb3dSb290KCktPmFwcGVu
ZENoaWxkKGNvbnRyb2xzLCBlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCmluZGV4IGUyMzBlYTYuLjdjZGIxNzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcApAQCAtMjM4LDcgKzIzOCw3IEBA
IHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6Y3JlYXRlU2hhZG93U3VidHJlZSgpCiAgICAgbV92YWx1
ZSA9IE1ldGVyVmFsdWVFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CiAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgYmFyLT5hcHBlbmRDaGlsZChtX3ZhbHVlLCBlYyk7Ci0gICAgZW5z
dXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChiYXIsIGVjKTsKKyAgICBlbnN1cmVCdWlsdGlu
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChiYXIsIGVjKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4IGJhNGE4
ODMuLmQ1ZGUwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNz
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgSFRNTFByb2dyZXNzRWxlbWVudDo6Y3JlYXRl
U2hhZG93U3VidHJlZSgpCiAgICAgbV92YWx1ZSA9IFByb2dyZXNzVmFsdWVFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgYmFyLT5hcHBl
bmRDaGlsZChtX3ZhbHVlLCBlYyk7Ci0gICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZChiYXIsIGVjKTsKKyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChi
YXIsIGVjKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1
bW1hcnlFbGVtZW50LmNwcAppbmRleCA3NThkODg5Li40YTIyZjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuY3BwCkBAIC03NCw4ICs3NCw4IEBAIFJlbmRlck9i
amVjdCogSFRNTFN1bW1hcnlFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJl
bmEsIFJlbmRlclN0eWxlCiB2b2lkIEhUTUxTdW1tYXJ5RWxlbWVudDo6Y3JlYXRlU2hhZG93U3Vi
dHJlZSgpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZW5zdXJlU2hhZG93Um9v
dCgpLT5hcHBlbmRDaGlsZChEZXRhaWxzTWFya2VyQ29udHJvbDo6Y3JlYXRlKGRvY3VtZW50KCkp
LCBlYywgdHJ1ZSk7Ci0gICAgZW5zdXJlU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChTdW1tYXJ5
Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMsIHRydWUpOworICAgIGVuc3Vy
ZUJ1aWx0aW5TaGFkb3dSb290KCktPmFwcGVuZENoaWxkKERldGFpbHNNYXJrZXJDb250cm9sOjpj
cmVhdGUoZG9jdW1lbnQoKSksIGVjLCB0cnVlKTsKKyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9v
dCgpLT5hcHBlbmRDaGlsZChTdW1tYXJ5Q29udGVudEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgp
KSwgZWMsIHRydWUpOwogfQogCiBIVE1MRGV0YWlsc0VsZW1lbnQqIEhUTUxTdW1tYXJ5RWxlbWVu
dDo6ZGV0YWlsc0VsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKaW5kZXggZDQ5NWRjZS4uMWEwMzU2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFBhc3NSZWZQ
dHI8SFRNTFRleHRBcmVhRWxlbWVudD4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUoKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGVuc3VyZVNoYWRvd1Jv
b3QoKS0+YXBwZW5kQ2hpbGQoVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50OjpjcmVhdGUoZG9j
dW1lbnQoKSksIGVjKTsKKyAgICBlbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZChUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMpOwog
fQogCiBjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0CkBAIC0yNzcsNyArMjc3LDcgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnNhbml0aXplVXNlcklucHV0VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVlLAog
CiBIVE1MRWxlbWVudCogSFRNTFRleHRBcmVhRWxlbWVudDo6aW5uZXJUZXh0RWxlbWVudCgpIGNv
bnN0CiB7Ci0gICAgTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOworICAg
IE5vZGUqIG5vZGUgPSBidWlsdGluU2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCk7CiAgICAgQVNT
RVJUKCFub2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUoZGl2VGFnKSk7CiAgICAgcmV0dXJuIHRvSFRN
TEVsZW1lbnQobm9kZSk7CiB9CkBAIC00NTQsNyArNDU0LDcgQEAgdm9pZCBIVE1MVGV4dEFyZWFF
bGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogICAgIFN0cmluZyBwbGFjZWhvbGRlclRl
eHQgPSBzdHJpcHBlZFBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5pc0Vt
cHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgICAgIHNoYWRv
d1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhvbGRlci5nZXQoKSwgZWMpOworICAgICAgICAg
ICAgYnVpbHRpblNoYWRvd1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhvbGRlci5nZXQoKSwg
ZWMpOwogICAgICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVy
LmNsZWFyKCk7CiAgICAgICAgIH0KQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9sZGVy
KSB7CiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KCkpOwogICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtp
dC1pbnB1dC1wbGFjZWhvbGRlciIpOwotICAgICAgICBzaGFkb3dSb290KCktPmluc2VydEJlZm9y
ZShtX3BsYWNlaG9sZGVyLCBzaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKS0+bmV4dFNpYmxpbmco
KSwgZWMpOworICAgICAgICBidWlsdGluU2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFj
ZWhvbGRlciwgYnVpbHRpblNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5uZXh0U2libGluZygp
LCBlYyk7CiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KICAgICBtX3BsYWNlaG9sZGVyLT5z
ZXRJbm5lclRleHQocGxhY2Vob2xkZXJUZXh0LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAKaW5kZXggNTUxZjA5NS4uODRlODExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApA
QCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkK
IAogdm9pZCBJbnB1dFR5cGU6OmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCkKIHsKLSAgICBlbGVtZW50
KCktPnJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICBlbGVtZW50KCktPnJlbW92ZUJ1aWx0aW5TaGFk
b3dSb290KCk7CiB9CiAKIGRvdWJsZSBJbnB1dFR5cGU6OnBhcnNlVG9Eb3VibGUoY29uc3QgU3Ry
aW5nJiwgZG91YmxlIGRlZmF1bHRWYWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlu
cHV0VHlwZS5jcHAKaW5kZXggYWNmZTFjYy4uMTExNGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
YW5nZUlucHV0VHlwZS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFJhbmdlSW5wdXRUeXBl
OjpoYW5kbGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7Ci0g
ICAgaWYgKGV2ZW50LT5idXR0b24oKSAhPSBMZWZ0QnV0dG9uIHx8ICF0YXJnZXROb2RlIHx8ICh0
YXJnZXROb2RlICE9IGVsZW1lbnQoKSAmJiAhdGFyZ2V0Tm9kZS0+aXNEZXNjZW5kYW50T2YoZWxl
bWVudCgpLT5zaGFkb3dSb290KCkpKSkKKyAgICBpZiAoZXZlbnQtPmJ1dHRvbigpICE9IExlZnRC
dXR0b24gfHwgIXRhcmdldE5vZGUgfHwgKHRhcmdldE5vZGUgIT0gZWxlbWVudCgpICYmICF0YXJn
ZXROb2RlLT5pc0Rlc2NlbmRhbnRPZihlbGVtZW50KCktPmJ1aWx0aW5TaGFkb3dSb290KCkpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIFNsaWRlclRodW1iRWxlbWVudCogdGh1bWIgPSBzbGlkZXJU
aHVtYkVsZW1lbnRPZihlbGVtZW50KCkpOwogICAgIGlmICh0YXJnZXROb2RlID09IHRodW1iKQpA
QCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgUmFuZ2VJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRy
ZWUoKQogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gY29udGFpbmVyID0gU2xpZGVyQ29udGFpbmVy
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb250YWluZXItPmFwcGVuZENoaWxkKHRy
YWNrLnJlbGVhc2UoKSwgZWMpOwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoVHJhY2tMaW1p
dGVyRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KSwgZWMpOwotICAgIGVsZW1lbnQoKS0+ZW5zdXJl
U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChjb250YWluZXIucmVsZWFzZSgpLCBlYyk7CisgICAg
ZWxlbWVudCgpLT5lbnN1cmVCdWlsdGluU2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZChjb250YWlu
ZXIucmVsZWFzZSgpLCBlYyk7CiB9CiAKIFJlbmRlck9iamVjdCogUmFuZ2VJbnB1dFR5cGU6OmNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDNlYzE1YmMuLjU5
MTljYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAg
LTIwMSwxMSArMjAxLDExIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dT
dWJ0cmVlKCkKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX2lubmVyVGV4dCA9IFRl
eHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBpZiAoIWNy
ZWF0ZXNDb250YWluZXIpIHsKLSAgICAgICAgZWxlbWVudCgpLT5lbnN1cmVTaGFkb3dSb290KCkt
PmFwcGVuZENoaWxkKG1faW5uZXJUZXh0LCBlYyk7CisgICAgICAgIGVsZW1lbnQoKS0+ZW5zdXJl
QnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQobV9pbm5lclRleHQsIGVjKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50
KCktPmVuc3VyZVNoYWRvd1Jvb3QoKTsKKyAgICBCdWlsdGluU2hhZG93Um9vdCogc2hhZG93Um9v
dCA9IGVsZW1lbnQoKS0+ZW5zdXJlQnVpbHRpblNoYWRvd1Jvb3QoKTsKICAgICBtX2NvbnRhaW5l
ciA9IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogICAgIG1fY29udGFpbmVyLT5z
ZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC10ZXh0ZmllbGQtZGVjb3JhdGlvbi1jb250YWluZXIi
KTsKICAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChtX2NvbnRhaW5lciwgZWMpOwpAQCAtMzY3
LDcgKzM2Nyw3IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRl
eHQoKQogICAgIGlmICghbV9wbGFjZWhvbGRlcikgewogICAgICAgICBtX3BsYWNlaG9sZGVyID0g
SFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgICAgICBt
X3BsYWNlaG9sZGVyLT5zZXRTaGFkb3dQc2V1ZG9JZCgiLXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRl
ciIpOwotICAgICAgICBlbGVtZW50KCktPnNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxh
Y2Vob2xkZXIsIG1fY29udGFpbmVyID8gbV9jb250YWluZXItPm5leHRTaWJsaW5nKCkgOiBpbm5l
clRleHRFbGVtZW50KCktPm5leHRTaWJsaW5nKCksIGVjKTsKKyAgICAgICAgZWxlbWVudCgpLT5i
dWlsdGluU2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWlu
ZXIgPyBtX2NvbnRhaW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4
dFNpYmxpbmcoKSwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAgICAgbV9wbGFj
ZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCBiYzNjNDU0Li5kNjEwMWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTM5LDcgKzEzOSw3
IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZShUaW1lcjxWYWxpZGF0
aW9uTWVzc2FnZT4qKQogICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0ZSBvciBub24tZml4ZWQg
cmVuZGVyZXJzIGFzIGNoaWxkcmVuLgogICAgIG1fYnViYmxlLT5lbnN1cmVJbmxpbmVTdHlsZURl
Y2woKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaG9zdC0+ZW5zdXJlU2hhZG93Um9vdCgp
LT5hcHBlbmRDaGlsZChtX2J1YmJsZS5nZXQoKSwgZWMpOworICAgIGhvc3QtPmVuc3VyZUJ1aWx0
aW5TaGFkb3dSb290KCktPmFwcGVuZENoaWxkKG1fYnViYmxlLmdldCgpLCBlYyk7CiAgICAgQVNT
RVJUKCFlYyk7CiAgICAgYWRqdXN0QnViYmxlUG9zaXRpb24oaG9zdC0+Z2V0UmVjdCgpLCBtX2J1
YmJsZS5nZXQoKSk7CiAKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFZhbGlkYXRpb25NZXNzYWdl
OjpkZWxldGVCdWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgICAgIG1f
bWVzc2FnZUJvZHkgPSAwOwogICAgICAgICBIVE1MRWxlbWVudCogaG9zdCA9IHRvSFRNTEVsZW1l
bnQobV9lbGVtZW50KTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgaG9zdC0+
c2hhZG93Um9vdCgpLT5yZW1vdmVDaGlsZChtX2J1YmJsZS5nZXQoKSwgZWMpOworICAgICAgICBo
b3N0LT5idWlsdGluU2hhZG93Um9vdCgpLT5yZW1vdmVDaGlsZChtX2J1YmJsZS5nZXQoKSwgZWMp
OwogICAgICAgICBtX2J1YmJsZSA9IDA7CiAgICAgfQogICAgIG1fbWVzc2FnZSA9IFN0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5j
cHAKaW5kZXggMzE5YTExZS4uZjlmMjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIGlubGluZSBz
dGF0aWMgYm9vbCBoYXNWZXJ0aWNhbEFwcGVhcmFuY2UoSFRNTElucHV0RWxlbWVudCogaW5wdXQp
CiBTbGlkZXJUaHVtYkVsZW1lbnQqIHNsaWRlclRodW1iRWxlbWVudE9mKE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUpOwotICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5vZGUtPnRvSW5w
dXRFbGVtZW50KCktPnNoYWRvd1Jvb3QoKTsKKyAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2Rl
LT50b0lucHV0RWxlbWVudCgpLT5idWlsdGluU2hhZG93Um9vdCgpOwogICAgIEFTU0VSVChzaGFk
b3cpOwogICAgIE5vZGUqIHRodW1iID0gc2hhZG93LT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQo
KS0+Zmlyc3RDaGlsZCgpOwogICAgIEFTU0VSVCh0aHVtYik7CkBAIC0xNDEsNyArMTQxLDcgQEAg
dm9pZCBSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCgpCiAgICAgTGVuZ3RoIGlucHV0SGVp
Z2h0ID0gaW5wdXQtPnJlbmRlcmVyKCktPnN0eWxlKCktPmhlaWdodCgpOwogICAgIFJlbmRlck9i
amVjdCogdHJhY2tSZW5kZXJlciA9IG5vZGUoKS0+Zmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpOwog
ICAgIGlmICghaXNWZXJ0aWNhbCAmJiBpbnB1dC0+cmVuZGVyZXIoKS0+aXNTbGlkZXIoKSAmJiAh
aW5wdXRIZWlnaHQuaXNGaXhlZCgpICYmICFpbnB1dEhlaWdodC5pc1BlcmNlbnQoKSkgewotICAg
ICAgICBSZW5kZXJPYmplY3QqIHRodW1iUmVuZGVyZXIgPSBpbnB1dC0+c2hhZG93Um9vdCgpLT5m
aXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKS0+Zmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpOworICAg
ICAgICBSZW5kZXJPYmplY3QqIHRodW1iUmVuZGVyZXIgPSBpbnB1dC0+YnVpbHRpblNoYWRvd1Jv
b3QoKS0+Zmlyc3RDaGlsZCgpLT5maXJzdENoaWxkKCktPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIo
KTsKICAgICAgICAgaWYgKHRodW1iUmVuZGVyZXIpIHsKICAgICAgICAgICAgIHN0eWxlKCktPnNl
dEhlaWdodCh0aHVtYlJlbmRlcmVyLT5zdHlsZSgpLT5oZWlnaHQoKSk7CiAgICAgICAgICAgICBp
ZiAodHJhY2tSZW5kZXJlcikKQEAgLTM1NSw3ICszNTUsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IFRyYWNrTGltaXRlckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKIFRyYWNrTGltaXRl
ckVsZW1lbnQqIHRyYWNrTGltaXRlckVsZW1lbnRPZihOb2RlKiBub2RlKQogewogICAgIEFTU0VS
VChub2RlKTsKLSAgICBTaGFkb3dSb290KiBzaGFkb3cgPSBub2RlLT50b0lucHV0RWxlbWVudCgp
LT5zaGFkb3dSb290KCk7CisgICAgQnVpbHRpblNoYWRvd1Jvb3QqIHNoYWRvdyA9IG5vZGUtPnRv
SW5wdXRFbGVtZW50KCktPmJ1aWx0aW5TaGFkb3dSb290KCk7CiAgICAgQVNTRVJUKHNoYWRvdyk7
CiAgICAgTm9kZSogbGltaXRlciA9IHNoYWRvdy0+Zmlyc3RDaGlsZCgpLT5sYXN0Q2hpbGQoKTsK
ICAgICBBU1NFUlQobGltaXRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAppbmRleCBhMWFlMTViLi5hMzgxY2M4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJv
bC5jcHAKQEAgLTIxMiw5ICsyMTIsOSBAQCBIVE1MSW5wdXRFbGVtZW50KiBSZW5kZXJGaWxlVXBs
b2FkQ29udHJvbDo6dXBsb2FkQnV0dG9uKCkgY29uc3QKIHsKICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihub2RlKCkpOwogCi0gICAg
QVNTRVJUKGlucHV0LT5zaGFkb3dSb290KCkpOworICAgIEFTU0VSVChpbnB1dC0+YnVpbHRpblNo
YWRvd1Jvb3QoKSk7CiAKLSAgICBOb2RlKiBidXR0b25Ob2RlID0gaW5wdXQtPnNoYWRvd1Jvb3Qo
KS0+Zmlyc3RDaGlsZCgpOworICAgIE5vZGUqIGJ1dHRvbk5vZGUgPSBpbnB1dC0+YnVpbHRpblNo
YWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpOwogICAgIHJldHVybiBidXR0b25Ob2RlICYmIGJ1dHRv
bk5vZGUtPmlzSFRNTEVsZW1lbnQoKSAmJiBidXR0b25Ob2RlLT5oYXNUYWdOYW1lKGlucHV0VGFn
KSA/IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihidXR0b25Ob2RlKSA6IDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IDMwMGI4YzkuLjc2MDRjOTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtMTUyLDEwICsxNTIsMTAg
QEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleHQoKQogICAgIGlmICh0
YXJnZXQtPnBhcmVudE5vZGUoKSkKICAgICAgICAgdGV4dENvbnRlbnQgPSB0YXJnZXQtPnRleHRD
b250ZW50KCk7CiAgICAgRXhjZXB0aW9uQ29kZSBpZ25vcmUgPSAwOwotICAgIGlmICghZW5zdXJl
U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCkpCi0gICAgICAgIHNoYWRvd1Jvb3QoKS0+YXBwZW5k
Q2hpbGQoU1ZHU2hhZG93VGV4dDo6Y3JlYXRlKGRvY3VtZW50KCksIHRleHRDb250ZW50KSwgaWdu
b3JlKTsKKyAgICBpZiAoIWVuc3VyZUJ1aWx0aW5TaGFkb3dSb290KCktPmZpcnN0Q2hpbGQoKSkK
KyAgICAgICAgYnVpbHRpblNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQoU1ZHU2hhZG93VGV4dDo6
Y3JlYXRlKGRvY3VtZW50KCksIHRleHRDb250ZW50KSwgaWdub3JlKTsKICAgICBlbHNlCi0gICAg
ICAgIHNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5zZXRUZXh0Q29udGVudCh0ZXh0Q29udGVu
dCwgaWdub3JlKTsKKyAgICAgICAgYnVpbHRpblNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5z
ZXRUZXh0Q29udGVudCh0ZXh0Q29udGVudCwgaWdub3JlKTsKIH0KIAogYm9vbCBTVkdUUmVmRWxl
bWVudDo6aXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNmQxNTE0MS4uYWEyYmNiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMTU3LDYgKzE1NywxNyBAQCBi
b29sIEludGVybmFsczo6aXNWYWxpZENvbnRlbnRTZWxlY3QoRWxlbWVudCogY29udGVudEVsZW1l
bnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJldHVybiB0b0hUTUxDb250ZW50RWxlbWVudChj
b250ZW50RWxlbWVudCktPmlzU2VsZWN0VmFsaWQoKTsKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omlz
QnVpbHRpblNoYWRvd1Jvb3QoTm9kZSogc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKCFzaGFkb3dSb290IHx8ICFzaGFkb3dSb290LT5pc1NoYWRvd1Jvb3QoKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgfQorCisgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzaGFkb3dSb290KS0+aXNCdWlsdGlu
KCk7Cit9CisKIFN0cmluZyBJbnRlcm5hbHM6OmVsZW1lbnRSZW5kZXJUcmVlQXNUZXh0KEVsZW1l
bnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghZWxlbWVudCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggYjg3MjUzMS4uM2M1MjU3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUNvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KE5vZGUq
IHNoYWRvd1Jvb3QsIGNvbnN0IFN0cmluZyYgaWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29s
IGlzVmFsaWRDb250ZW50U2VsZWN0KEVsZW1lbnQqIGNvbnRlbnRFbGVtZW50LCBFeGNlcHRpb25D
b2RlJik7CisgICAgYm9vbCBpc0J1aWx0aW5TaGFkb3dSb290KE5vZGUqIHNoYWRvd1Jvb3QsIEV4
Y2VwdGlvbkNvZGUmKTsKIAogI2lmIEVOQUJMRShJTlBVVF9DT0xPUikKICAgICB2b2lkIHNlbGVj
dENvbG9ySW5Db2xvckNob29zZXIoRWxlbWVudCosIGNvbnN0IFN0cmluZyYgY29sb3JWYWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZGEwODFmNS4uOTgxMThhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNDUsNiArNDUsNyBAQCBtb2R1
bGUgd2luZG93IHsKICAgICAgICAgRWxlbWVudCBjcmVhdGVDb250ZW50RWxlbWVudChpbiBEb2N1
bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIEVsZW1lbnQgZ2V0
RWxlbWVudEJ5SWRJblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290LCBpbiBET01TdHJpbmcg
aWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICBib29sZWFuIGlzVmFsaWRDb250ZW50
U2VsZWN0KGluIEVsZW1lbnQgY29udGVudEVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwor
ICAgICAgICBib29sZWFuIGlzQnVpbHRpblNoYWRvd1Jvb3QoaW4gTm9kZSBzaGFkb3dSb290KSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9JTlBVVF9DT0xPUikg
JiYgRU5BQkxFX0lOUFVUX0NPTE9SCiAgICAgICAgIHZvaWQgc2VsZWN0Q29sb3JJbkNvbG9yQ2hv
b3NlcihpbiBFbGVtZW50IGVsZW1lbnQsIGluIERPTVN0cmluZyBjb2xvclZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBhMDE5Y2FlLi4wMjdmNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTItMDItMDUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBJbnRyb2R1Y2VzIEJ1aWx0aW5TaGFkb3dSb290IGFuZCBtZXRob2RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2MTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVzIEVsZW1lbnQ6OmVuc3Vy
ZVNoYWRvd1Jvb3QoKS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3
aW4vV2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIwMTItMDItMDUgIERhbiBCZXJuc3RlaW4gIDxtaXR6
QGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA4MDk1MjU+IFdlYktpdDLi
gJlzIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIGFs
d2F5cyByZXR1cm5zIHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBjNDQ1ZmZjLi41NDc4
NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xNTQsNyArMTU0LDYgQEAgRVhQT1JUUwog
ICAgICAgICA/Y3JlYXRlQFJhbmdlQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBX
ZWJDb3JlQEBAV1RGQEBWPyRQYXNzUmVmUHRyQFZEb2N1bWVudEBXZWJDb3JlQEBANEBWPyRQYXNz
UmVmUHRyQFZOb2RlQFdlYkNvcmVAQEA0QEgxSEBaCiAgICAgICAgID9jcmVhdGVAU2hhZG93Um9v
dEBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWU2hhZG93Um9vdEBXZWJDb3JlQEBAV1RGQEBQ
QVZFbGVtZW50QDJAQUFIQFoKICAgICAgICAgP2NyZWF0ZVdyYXBwZXJAV2ViQ29yZUBAWUE/QVZK
U1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVZOb2Rl
QDFAQFoKLSAgICAgICAgP2Vuc3VyZVNoYWRvd1Jvb3RARWxlbWVudEBXZWJDb3JlQEBRQUVQQVZT
aGFkb3dSb290QDJAWFoKICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQ
QkVAWgogICAgICAgICA/ZXF1YWxJZ25vcmluZ0Nhc2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAx
QFBCRUBaCiAgICAgICAgID9leHRlcm5hbFJlcHJlc2VudGF0aW9uQFdlYkNvcmVAQFlBP0FWU3Ry
aW5nQFdURkBAUEFWRWxlbWVudEAxQElAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2lu
L1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVm
CmluZGV4IDFkYjUwZjYuLmZhNWNiZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5k
ZWYKQEAgLTE0OCw3ICsxNDgsNiBAQCBFWFBPUlRTCiAgICAgICAgID9jcmVhdGVAUmFuZ2VAV2Vi
Q29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/JFBhc3NSZWZQ
dHJAVkRvY3VtZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRA
SDFIQFoKICAgICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVm
UHRyQFZTaGFkb3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgogICAgICAg
ICA/Y3JlYXRlV3JhcHBlckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVA
M0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFBBVk5vZGVAMUBAWgotICAgICAgICA/ZW5zdXJlU2hh
ZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFBRVBBVlNoYWRvd1Jvb3RAMkBYWgogICAgICAgICA/
ZXF1YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQFBCRUBaCiAgICAgICAgID9lcXVhbElnbm9y
aW5nQ2FzZUBXVEZAQFlBX05QQVZTdHJpbmdJbXBsQDFAUEJFQFoKICAgICAgICAgP2V4dGVybmFs
UmVwcmVzZW50YXRpb25AV2ViQ29yZUBAWUE/QVZTdHJpbmdAV1RGQEBQQVZFbGVtZW50QDFASUBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA1YWFjMDRkLi44ZWM3ZmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKQEAgLTY1LDcgKzY1LDYgQEAgX1pON1dlYkNvcmU2SlNOb2RlMTBwdXRW
aXJ0dWFsRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNWYWx1ZUUK
IF9aTjdXZWJDb3JlNkpTTm9kZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4zSlNDMTFTbG90Vmlz
aXRvckU7CiBfWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRTsKIF9aTjdXZWJDb3JlNnRvTm9kZUVO
M0pTQzdKU1ZhbHVlRTsKLV9aTjdXZWJDb3JlN0VsZW1lbnQxNmVuc3VyZVNoYWRvd1Jvb3RFdjsK
IF9aTjdXZWJDb3JlN0VsZW1lbnQxNnJlbW92ZVNoYWRvd1Jvb3RFdjsKIF9aTjdXZWJDb3JlN3Rv
UmFuZ2VFTjNKU0M3SlNWYWx1ZUU7CiBfWk43V2ViQ29yZTlKU0VsZW1lbnQxMHB1dFZpcnR1YWxF
UE4zSlNDOUV4ZWNTdGF0ZUVSS05TMV8xMElkZW50aWZpZXJFTlMxXzdKU1ZhbHVlRVJOUzFfMTVQ
dXRQcm9wZXJ0eVNsb3RFOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>