<?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>147295</bug_id>
          
          <creation_ts>2015-07-25 10:35:36 -0700</creation_ts>
          <short_desc>AX: VoiceOver unable to access content in malformed trees</short_desc>
          <delta_ts>2015-07-30 08:57:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>achristensen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>ossy</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112216</commentid>
    <comment_count>0</comment_count>
      <attachid>257513</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-25 10:35:36 -0700</bug_when>
    <thetext>Created attachment 257513
simple testcase

Sometimes when the tree is malformed, VoiceOver will skip content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112217</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-07-25 10:35:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/21997009&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112218</commentid>
    <comment_count>2</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-25 10:37:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/14862892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112219</commentid>
    <comment_count>3</comment_count>
      <attachid>257514</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-25 10:50:20 -0700</bug_when>
    <thetext>Created attachment 257514
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112220</commentid>
    <comment_count>4</comment_count>
      <attachid>257515</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-25 11:04:46 -0700</bug_when>
    <thetext>Created attachment 257515
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112233</commentid>
    <comment_count>5</comment_count>
      <attachid>257519</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-25 15:51:19 -0700</bug_when>
    <thetext>Created attachment 257519
patch

some minor modification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112302</commentid>
    <comment_count>6</comment_count>
      <attachid>257519</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-26 00:02:19 -0700</bug_when>
    <thetext>Comment on attachment 257519
patch

it looks like your general approach is to try to invalidate tree role usage after the role has been assigned.
i think instead we should take the approach like AccessibilityList where AXObjectCache will make a new element t(AccessibilityTree.cpp) where we can override determineAccessibilityRole() to look at the children and change the role depending on what we need do that

that way we don&apos;t have to worry about missing any cases where tree role still peeks through and we don&apos;t have to pollute AccessibilityObject with methods that don&apos;t apply to all objects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112507</commentid>
    <comment_count>7</comment_count>
      <attachid>257593</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-27 14:43:28 -0700</bug_when>
    <thetext>Created attachment 257593
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112510</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-27 14:45:22 -0700</bug_when>
    <thetext>Attachment 257593 did not pass style-queue:


ERROR: Source/WebCore/accessibility/AccessibilityTree.cpp:30:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/accessibility/AccessibilityTree.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebCore/accessibility/AccessibilityTree.cpp:42:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/accessibility/AccessibilityTree.cpp:99:  Declaration has space between type name and * in AccessibilityObject *axObj  [whitespace/declaration] [3]
ERROR: Source/WebCore/accessibility/AccessibilityTreeItem.h:36:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/accessibility/AccessibilityTree.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/accessibility/AccessibilityTreeItem.cpp:30:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/WebCore/accessibility/AccessibilityTreeItem.cpp:39:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:2059:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 9 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112529</commentid>
    <comment_count>9</comment_count>
      <attachid>257593</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-27 15:24:14 -0700</bug_when>
    <thetext>Comment on attachment 257593
patch

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

in general, i think we don&apos;t want to add new attributes. we want to keep our logic inside ::roleValue() and determineRoleValue()

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:214
&gt; +    virtual bool shouldIgnoreAttributeRole() const { return false; }

I doubt we need either of these methods.

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:62
&gt; +    m_ariaRole = determineAriaRoleAttribute();

it doesn&apos;t look like you use this anywhere.

for 1, if the role is not a &quot;tree&quot; role we shouldn&apos;t proceed any further

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:65
&gt; +    m_role = TreeRole;

seems like we should just override canHaveChildren() and return true

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:74
&gt; +        if (child-&gt;isGroup()) {

can we have groups of groups of groups of tree items?

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:77
&gt; +                    m_isMalformed = true;

this should just set some local variable. we don&apos;t need an instance variable to store this

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:84
&gt; +    // After validating the tree, we want the children to reflect the correct role

this comment is not necessary. it is self evident from the code

&gt; Source/WebCore/accessibility/AccessibilityTreeItem.h:42
&gt; +        virtual bool shouldIgnoreAttributeRole() const override { return !m_isTreeItemValid; }

i don&apos;t think this concept is a good one. i think the role should just reflect what the object is. we don&apos;t want to have to check another attribute to figure out what the role is

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:2059
&gt; +            return @&quot;AXMalformed&quot;;

this is not something we want to return. if the object is not a tree, it should just revert to what it normally would be, which will be taken care of by code below</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112553</commentid>
    <comment_count>10</comment_count>
      <attachid>257605</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-27 15:48:14 -0700</bug_when>
    <thetext>Created attachment 257605
patch

Fixed style and modified build files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112619</commentid>
    <comment_count>11</comment_count>
      <attachid>257617</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-27 17:17:10 -0700</bug_when>
    <thetext>Created attachment 257617
patch

Fixed an issue that group of group of groups of treeitems is considered valid for a tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112962</commentid>
    <comment_count>12</comment_count>
      <attachid>257712</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-28 17:26:42 -0700</bug_when>
    <thetext>Created attachment 257712
patch

Broke the dependency cycle between tree and treeitem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113212</commentid>
    <comment_count>13</comment_count>
      <attachid>257712</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-29 16:59:15 -0700</bug_when>
    <thetext>Comment on attachment 257712
patch

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

thanks

&gt; Source/WebCore/ChangeLog:9
&gt; +        VoiceOver is skipping the content of the malformed trees. Fixed it by ignoring

VoiceOver is skipping the content of malformed trees. Fixed it by ignoring the tree/treeitem attribute roles for those malformed trees.

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:2505
&gt; +    if (m_ariaRole != UnknownRole &amp;&amp; !shouldIgnoreAriaRole)

put this into the if statement for brevity
shouldIgnoreAttributeRole();

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.h:213
&gt; +    virtual bool shouldIgnoreAttributeRole() const { return false; }

i would put this on AccessibilityObject

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:75
&gt; +    std::queue&lt;Node*&gt; nodeQueue;

lets use Dequeue here

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:88
&gt; +        if (is&lt;Element&gt;(*child)) {

i think we can cut down a lot of code using nodeHasRole(node, &quot;tree item&quot;) || nodeHas(&quot;group&quot;)

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:99
&gt; +            for (Node* groupChild = child-&gt;firstChild(); groupChild; groupChild = groupChild-&gt;nextSibling())

i think we can use auto in more places here

&gt; Source/WebCore/accessibility/AccessibilityTree.h:46
&gt; +    bool isTreeValid();

i think this can be const

&gt; Source/WebCore/accessibility/AccessibilityTreeItem.cpp:60
&gt; +    AccessibilityObject* axObj = parentObject();

i think we can write this as one for loop line

AXObject *ax= nullptr;
for ( = parent; parent &amp;&amp; !parent-&gt;IsTreE(); parent = next parent) {}

m_isTreeValid = parent;

&gt; LayoutTests/platform/mac/accessibility/malformed-tree.html:38
&gt; +    shouldBe(&quot;tree.role&quot;, &quot;\&quot;AXRole: AXOutline\&quot;&quot;);

&quot;\&quot;AXRole: AXOutline\&quot;&quot; =&gt;

&quot;&apos;AXRole: AXOutline&apos;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113237</commentid>
    <comment_count>14</comment_count>
      <attachid>257795</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-29 18:17:33 -0700</bug_when>
    <thetext>Created attachment 257795
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113240</commentid>
    <comment_count>15</comment_count>
      <attachid>257795</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-29 18:25:01 -0700</bug_when>
    <thetext>Comment on attachment 257795
patch

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

thanks. almost there

&gt; Source/WebCore/ChangeLog:9
&gt; +        VoiceOver is skipping the content of malformed trees. Fixed it by ignoring

VoiceOver is skipping the content of malformed trees.
This fixes the problem by having the tree check if it has valid children (tree items) and makes tree items check if they are inside trees.

&gt; Source/WebCore/accessibility/AccessibilityObject.h:776
&gt; +    // Function to determine if the attribute role should be ignored

this comment probably not necessary. your method name does the same thing that this comment says

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:72
&gt; +    // A valid tree can only have treeitem or group of treeitems as child

&quot;... as a child.&quot;

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:75
&gt; +    Deque&lt;Node*&gt; queue;

we should make this queue after we check if there&apos;s node (next line)

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:85
&gt; +        Node* child = queue.takeFirst();

auto child

&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:89
&gt; +        if (nodeHasRole(child, &quot;treeitem&quot;))

does nodeHasRole already check the is&lt;Element&gt; for us? we might be able to get rid of that check

&gt; Source/WebCore/accessibility/AccessibilityTreeItem.cpp:56
&gt; +    m_isTreeItemValid = false;

it looks like we don&apos;t need to initialize this to anything so the line below will take care of it

&gt; Source/WebCore/accessibility/AccessibilityTreeItem.cpp:58
&gt; +    // Walk the parent chain looking for a parent that is a tree, treeitem is considered

// Walk the parent chain looking for a parent that is a tree. A tree item is only considered valid if it is in a tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113243</commentid>
    <comment_count>16</comment_count>
      <attachid>257795</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-29 18:38:52 -0700</bug_when>
    <thetext>Comment on attachment 257795
patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityTree.cpp:89
&gt;&gt; +        if (nodeHasRole(child, &quot;treeitem&quot;))
&gt; 
&gt; does nodeHasRole already check the is&lt;Element&gt; for us? we might be able to get rid of that check

The nodeHasRole will return false if the node is not Element object. But we want to ignore checking nodes that are not Elements, like text nodes. I think we still need to keep that check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113245</commentid>
    <comment_count>17</comment_count>
      <attachid>257797</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2015-07-29 18:45:46 -0700</bug_when>
    <thetext>Created attachment 257797
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113343</commentid>
    <comment_count>18</comment_count>
      <attachid>257797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-30 04:10:45 -0700</bug_when>
    <thetext>Comment on attachment 257797
patch

Clearing flags on attachment: 257797

Committed r187582: &lt;http://trac.webkit.org/changeset/187582&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113344</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-30 04:10:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113346</commentid>
    <comment_count>20</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-07-30 04:55:52 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Comment on attachment 257797 [details]
&gt; patch
&gt; 
&gt; Clearing flags on attachment: 257797
&gt; 
&gt; Committed r187582: &lt;http://trac.webkit.org/changeset/187582&gt;

It broke the Apple Windows build:
WebCore.lib(AccessibilityAllInOne.obj) : error LNK2019: unresolved external symbol &quot;public: static class WTF::Ref&lt;class WebCore::AccessibilityTree&gt; __cdecl WebCore::AccessibilityTree::create(class WebCore::RenderObject *)&quot; (?create@AccessibilityTree@WebCore@@SA?AV?$Ref@VAccessibilityTree@WebCore@@@WTF@@PAVRenderObject@2@@Z) referenced in function &quot;class WTF::Ref&lt;class WebCore::AccessibilityObject&gt; __cdecl WebCore::createFromRenderer(class WebCore::RenderObject *)&quot; (?createFromRenderer@WebCore@@YA?AV?$Ref@VAccessibilityObject@WebCore@@@WTF@@PAVRenderObject@1@@Z) [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
WebCore.lib(AccessibilityAllInOne.obj) : error LNK2019: unresolved external symbol &quot;public: static class WTF::Ref&lt;class WebCore::AccessibilityTreeItem&gt; __cdecl WebCore::AccessibilityTreeItem::create(class WebCore::RenderObject *)&quot; (?create@AccessibilityTreeItem@WebCore@@SA?AV?$Ref@VAccessibilityTreeItem@WebCore@@@WTF@@PAVRenderObject@2@@Z) referenced in function &quot;class WTF::Ref&lt;class WebCore::AccessibilityObject&gt; __cdecl WebCore::createFromRenderer(class WebCore::RenderObject *)&quot; (?createFromRenderer@WebCore@@YA?AV?$Ref@VAccessibilityObject@WebCore@@@WTF@@PAVRenderObject@1@@Z) [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]
C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin32\WebKit.dll : fatal error LNK1120: 2 unresolved externals [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.vcxproj\WebKit\WebKit.vcxproj]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113370</commentid>
    <comment_count>21</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2015-07-30 08:47:51 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #18)
&gt; &gt; Comment on attachment 257797 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 257797
&gt; &gt; 
&gt; &gt; Committed r187582: &lt;http://trac.webkit.org/changeset/187582&gt;
&gt; 
&gt; It broke the Apple Windows build:
&gt; WebCore.lib(AccessibilityAllInOne.obj) : error LNK2019: unresolved external
&gt; symbol &quot;public: static class WTF::Ref&lt;class WebCore::AccessibilityTree&gt;
&gt; __cdecl WebCore::AccessibilityTree::create(class WebCore::RenderObject *)&quot;
&gt; (?create@AccessibilityTree@WebCore@@SA?AV?$Ref@VAccessibilityTree@WebCore@@@W
&gt; TF@@PAVRenderObject@2@@Z) referenced in function &quot;class WTF::Ref&lt;class
&gt; WebCore::AccessibilityObject&gt; __cdecl WebCore::createFromRenderer(class
&gt; WebCore::RenderObject *)&quot;
&gt; (?createFromRenderer@WebCore@@YA?AV?$Ref@VAccessibilityObject@WebCore@@@WTF@@
&gt; PAVRenderObject@1@@Z)
&gt; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.
&gt; vcxproj\WebKit\WebKit.vcxproj]
&gt; WebCore.lib(AccessibilityAllInOne.obj) : error LNK2019: unresolved external
&gt; symbol &quot;public: static class WTF::Ref&lt;class WebCore::AccessibilityTreeItem&gt;
&gt; __cdecl WebCore::AccessibilityTreeItem::create(class WebCore::RenderObject
&gt; *)&quot;
&gt; (?create@AccessibilityTreeItem@WebCore@@SA?AV?$Ref@VAccessibilityTreeItem@Web
&gt; Core@@@WTF@@PAVRenderObject@2@@Z) referenced in function &quot;class
&gt; WTF::Ref&lt;class WebCore::AccessibilityObject&gt; __cdecl
&gt; WebCore::createFromRenderer(class WebCore::RenderObject *)&quot;
&gt; (?createFromRenderer@WebCore@@YA?AV?$Ref@VAccessibilityObject@WebCore@@@WTF@@
&gt; PAVRenderObject@1@@Z)
&gt; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.
&gt; vcxproj\WebKit\WebKit.vcxproj]
&gt; C:\cygwin\home\buildbot\slave\win-
&gt; release\build\WebKitBuild\Release\bin32\WebKit.dll : fatal error LNK1120: 2
&gt; unresolved externals
&gt; [C:\cygwin\home\buildbot\slave\win-release\build\Source\WebKit\WebKit.
&gt; vcxproj\WebKit\WebKit.vcxproj]


I think you need to add includes for these two new files to AccessibilityAllInOne.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113373</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-30 08:57:05 -0700</bug_when>
    <thetext>Should be fixed in http://trac.webkit.org/changeset/187584</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>257513</attachid>
            <date>2015-07-25 10:35:36 -0700</date>
            <delta_ts>2015-07-25 10:35:36 -0700</delta_ts>
            <desc>simple testcase</desc>
            <filename>unorderedListSimpleWithTreeRole.html</filename>
            <type>text/html</type>
            <size>1339</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTCAyLjAvL0VOIj4KPEhUTUw+
CiAgICA8SEVBRD4KICAgICAgICA8VElUTEU+CiAgICAgICAgICAgIFBhZ2UgVGl0bGUKICAgICAg
ICA8L1RJVExFPgogICAgICAgIDxTQ1JJUFQ+CiAgICAgICAgICAgIHdpbmRvdy5vbmxvYWQgPSBm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJTVEFSVF9CVVRUT04iKS5mb2N1cygpOwogICAgICAgICAgICB9PC9TQ1JJUFQ+CiAg
ICAgICAgCiAgICAgICAgPFNUWUxFPgogICAgICAgICAgICBkaXYgeyBib3JkZXI6c29saWQgMXB4
IGJsYWNrOyBtYXJnaW46IDEwcHg7IHBhZGRpbmc6MTBweDt9CiAgICAgICAgICAgIDwvU1RZTEU+
CiAgICA8L0hFQUQ+CiAgICA8Qk9EWT4KICAgICAgICAKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1
dHRvbiIgaWQ9IlNUQVJUX0JVVFRPTiI+U3RhcnQgQnV0dG9uPC9idXR0b24+CiAgICAgICAgCiAg
ICAgICAgPHVsIHJvbGU9InRyZWUiPgogICAgICAgICAgICA8bGkgaWQ9IklURU1fQSI+CiAgICAg
ICAgICAgICAgICA8c3BhbiBpZD0iU1BBTl9BIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0i
TElOS19BIiBocmVmPSJodHRwOi8vYXBwbGUuY29tIj4KICAgICAgICAgICAgICAgICAgICAgICAg
RW50cnkgQQogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIDwvc3Bhbj4K
ICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGlkPSJJVEVNX0IiPgogICAgICAgICAg
ICAgICAgPHNwYW4gaWQ9IlNQQU5fQiI+CiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkxJTktf
QiIgaHJlZj0iaHR0cDovL2FwcGxlLmNvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgIEVudHJ5
IEIKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAg
ICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAKICAgICAgICAgICAgPGxpIGlkPSJJVEVNX0Mi
PgogICAgICAgICAgICAgICAgPHNwYW4gaWQ9IlNQQU5fQyI+CiAgICAgICAgICAgICAgICAgICAg
PGEgaWQ9IkxJTktfQyIgaHJlZj0iaHR0cDovL2FwcGxlLmNvbSI+CiAgICAgICAgICAgICAgICAg
ICAgICAgIEVudHJ5IEMKICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8
L3NwYW4+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICAKICAgICAgICA8
YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9IkVORF9CVVRUT04iPkVuZCBCdXR0b248L2J1dHRvbj4K
ICAgICAgICAKICAgIDwvQk9EWT4KPC9IVE1MPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257514</attachid>
            <date>2015-07-25 10:50:20 -0700</date>
            <delta_ts>2015-07-25 11:04:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13106</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA3LTI1ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiB0aGUgbWFsZm9ybWVkIHRy
ZWVzLiBGaXhlZCBpdCBieSBpZ25vcmluZworICAgICAgICB0aGUgdHJlZS90cmVlaXRlbSBhdHRy
aWJ1dGUgcm9sZSBmb3IgdGhlIG1hbGZvcm1lZCB0cmVlcy4gQWxzbyBhZGRlZCBBWE1hbGZvcm1l
ZAorICAgICAgICBzdWJyb2xlIHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1ZhbGlkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc01hbGZvcm1lZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNNYWxmb3JtZWRUcmVlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXJrVHJlZUl0ZW1JZ25vcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlnbm9yZVRyZWVJdGVtUm9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWYWxpZFRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aWdub3JlVHJlZUl0ZW1S
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENo
aWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
c3Vicm9sZV0pOgorCiAyMDE1LTA3LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFub3RoZXIgYnVpbGQgZml4LiBSZW1vdmVkIHRoZSB1bnVzZWQgYXJndW1l
bnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNyAr
MTAwMywxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAjZW5kaWYKLSAgICAK
KyAgICAvLyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIGEgbWFsZm9ybWVkIHRyZWUgYW5kIGlnbm9y
ZSB0cmVlL3RyZWVpdGVtIHJvbGVzCisgICAgdmlydHVhbCBib29sIGlzVmFsaWRUcmVlKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWVJdGVtKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWFya1RyZWVJdGVtSWdu
b3JlZCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgaWdub3JlVHJlZUl0ZW1Sb2xlKCkgeyB9Owor
CiBwcm90ZWN0ZWQ6CiAgICAgQVhJRCBtX2lkOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBtX2NoaWxkcmVuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxODcy
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkxLDcgKzExOTEsOSBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAogICAgIC8vIEFuIEFSSUEgdHJlZSBjYW4gb25seSBoYXZlIHRyZWUgaXRlbXMgYW5kIHN0YXRp
YyB0ZXh0IGFzIGNoaWxkcmVuLgotICAgIGlmICghaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSkKKyAg
ICAvLyBGb3IgdGhlIGZpcnN0IHRpbWUgYnVpbGRpbmcgdGhlIHRyZWUsIHdlIGFkZCBhbGwgdGhl
IGNoaWxkIG5vZGVzIHRvIHRoZSB0cmVlLCBiZWNhdXNlCisgICAgLy8gd2UgbmVlZCB0byB1c2Ug
dGhlIGNoaWxkcmVuIHRvIGRldGVybWluZSB0aGUgdmFsaWQgdHJlZS4KKyAgICBpZiAobV9pc1Ry
ZWVWYWxpZGF0ZWQgJiYgIWlzQWxsb3dlZENoaWxkT2ZUcmVlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gQWxsb3cgdGhlIHBsYXRmb3JtIHRvIGRlY2lkZSBpZiB0aGUgYXR0YWNo
bWVudCBpcyBpZ25vcmVkIG9yIG5vdC4KQEAgLTI0OTcsNyArMjQ5OSwxMiBAQCBBY2Nlc3NpYmls
aXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gVW5rbm93blJvbGU7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBtX2FyaWFSb2xlID0g
ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKKworICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUg
cm9sZSBpcyB0cmVlaXRlbSBidXQgdGhlIHBhcmVudCB0cmVlIGlzIG1hbGZvcm1lZCwgd2Ugc2hv
dWxkIGlnbm9yZSB0aGUKKyAgICAvLyBhdHRyaWJ1dGUgcm9sZS4KKyAgICBib29sIHNob3VsZEln
bm9yZUFyaWFSb2xlID0gKG1fYXJpYVJvbGUgPT0gVHJlZUl0ZW1Sb2xlICYmIGlzTWFsZm9ybWVk
VHJlZUl0ZW0oKSk7CisgICAgaWYgKG1fYXJpYVJvbGUgIT0gVW5rbm93blJvbGUgJiYgIXNob3Vs
ZElnbm9yZUFyaWFSb2xlKQogICAgICAgICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBO
b2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwpAQCAtMzEwNyw2ICszMTE0LDUxIEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlUm8KICAgICAgICAgaWYgKCFtZW51
SXRlbUNvdW50KQogICAgICAgICAgICAgbV9yb2xlID0gR3JvdXBSb2xlOwogICAgIH0KKworICAg
IC8vIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGEgdHJlZSBpcyB2YWxpZC4KKyAgICBpZiAocm9s
ZVZhbHVlKCkgPT0gVHJlZVJvbGUpIHsKKyAgICAgICAgbV9pc01hbGZvcm1lZFRyZWUgPSAhaXNW
YWxpZFRyZWUoKTsKKworICAgICAgICAvLyByZWJ1aWxkIHRoZSB0cmVlIHRvIGhhdmUgdGhlIGNv
cnJlY3QgY2hpbGRyZW4uCisgICAgICAgIGlmICghbV9pc1RyZWVWYWxpZGF0ZWQpIHsKKyAgICAg
ICAgICAgIG1faXNUcmVlVmFsaWRhdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZUFjY2Vz
c2liaWxpdHlSb2xlKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzTWFsZm9ybWVkVHJlZSgp
KQorICAgICAgICAgICAgbV9yb2xlID0gR3JvdXBSb2xlOworICAgIH0KKyAgICAvLyB3ZSBhbHNv
IG5lZWQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSByb2xlcyBpZiB0aGUgdHJlZSBpcyBtYWxmb3Jt
ZWQuCisgICAgaWYgKGlzTWFsZm9ybWVkVHJlZSgpKQorICAgICAgICBpZ25vcmVUcmVlSXRlbVJv
bGUoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc1ZhbGlkVHJlZSgp
Cit7CisgICAgLy8gQSB2YWxpZCB0cmVlIGNhbiBvbmx5IGhhdmUgdHJlZWl0ZW0gb3IgZ3JvdXAg
b2YgdHJlZWl0ZW1zIGFzIGNoaWxkCisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFy
aWEvcm9sZXMjdHJlZQorICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7
CisgICAgICAgIGlmICghY2hpbGQtPmlzVHJlZUl0ZW0oKSAmJiAhY2hpbGQtPmlzR3JvdXAoKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNoaWxkLT5pc0dyb3VwKCkp
IHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZ3JvdXBDaGlsZCA6IGNoaWxkLT5jaGls
ZHJlbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFncm91cENoaWxkLT5pc1RyZWVJdGVtKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjppZ25vcmVUcmVlSXRlbVJvbGUoKQoreworCisgICAgaWYgKGlzVHJlZUl0ZW0o
KSkgeworICAgICAgICBtYXJrVHJlZUl0ZW1JZ25vcmVkKCk7CisgICAgICAgIG1fcm9sZSA9IGRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRv
JiBjaGlsZCA6IGNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxkLT5pZ25vcmVUcmVlSXRlbVJvbGUo
KTsKIH0KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4o
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDE4NzI3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMzYsNyArMzM2LDE4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIG1hdGhQ
b3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZTsK
ICAgICAKICAgICBib29sIGlzSWdub3JlZEVsZW1lbnRXaXRoaW5NYXRoVHJlZSgpIGNvbnN0Owor
CisgICAgLy8gZnVuY3Rpb25zIHRvIGRldGVybWluZSBhIG1hbGZvcm1lZCB0cmVlIGFuZCBpZ25v
cmUgdHJlZS90cmVlaXRlbSByb2xlcworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkVHJlZSgpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVUcmVlSXRlbVJvbGUoKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgbWFya1RyZWVJdGVtSWdub3JlZCgpIG92ZXJyaWRlIHsgbV9pc01h
bGZvcm1lZFRyZWVJdGVtID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRy
ZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzTWFsZm9ybWVkVHJlZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWVJdGVtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pc01hbGZvcm1lZFRyZWVJdGVtOyB9CiAjZW5kaWYKK3Byb3RlY3RlZDoKKyAgICBib29sIG1f
aXNNYWxmb3JtZWRUcmVlID0gZmFsc2U7CisgICAgYm9vbCBtX2lzTWFsZm9ybWVkVHJlZUl0ZW0g
PSBmYWxzZTsKKyAgICBib29sIG1faXNUcmVlVmFsaWRhdGVkID0gZmFsc2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIwNTMsNiArMjA1Myw5IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAgICAgCiAgICAgaWYg
KG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlP
dXRsaW5lUm93U3Vicm9sZTsKKworICAgIGlmIChtX29iamVjdC0+aXNNYWxmb3JtZWRUcmVlKCkp
CisgICAgICAgIHJldHVybiBAIkFYTWFsZm9ybWVkIjsKICAgICAKICAgICBpZiAobV9vYmplY3Qt
PmlzRmllbGRzZXQoKSkKICAgICAgICAgcmV0dXJuIEAiQVhGaWVsZHNldCI7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxODczODkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNy0yNSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29t
PgorCisgICAgICAgIEFYOiBWb2ljZU92ZXIgdW5hYmxlIHRvIGFjY2VzcyBjb250ZW50IGluIG1h
bGZvcm1lZCB0cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3Mjk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDg2Mjg5Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXJpYS1tYXBwaW5ncy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hp
bGQtZXhwb3NlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90cmVlaXRl
bS1jaGlsZC1leHBvc2VkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sOiBBZGRlZC4KKwogMjAxNS0w
Ny0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2lu
XSBUZXN0IHJlc3VsdHMgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLW1hcHBpbmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwJKHJldmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3
ICsxMiw3IEBACiA8ZGl2IGlkPSJkb2N1bWVudCIgcm9sZT0iZG9jdW1lbnQiPmRvY3VtZW50IHJv
bGU8L2Rpdj4KIDxkaXYgaWQ9InN0YXR1cyIgcm9sZT0ic3RhdHVzIj5zdGF0dXMgcm9sZTwvZGl2
PgogPGRpdiBpZD0idG9vbHRpcCIgcm9sZT0idG9vbHRpcCI+dG9vbHRpcCByb2xlPC9kaXY+Ci08
ZGl2IGlkPSJ0cmVlIiByb2xlPSJ0cmVlIj50cmVlIHJvbGU8L2Rpdj4KKzxkaXYgaWQ9InRyZWUi
IHJvbGU9InRyZWUiPjxkaXYgcm9sZT0idHJlZWl0ZW0iPnRyZWUgcm9sZTwvZGl2PjwvZGl2Pgog
PGRpdiBpZD0idHJlZWl0ZW0iIHJvbGU9InRyZWVpdGVtIj50cmVlaXRlbSByb2xlPC9kaXY+CiA8
YnI+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVl
aXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2
LDcgQEAgVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFuIGVsZQogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdHJlZS5jaGlsZHJlbkNvdW50IGlzIDIKK1BBU1Mg
dHJlZS5jaGlsZHJlbkNvdW50IGlzIDMKIFBBU1MgaW5wdXRGaWVsZC5pc1ZhbGlkIGlzIHRydWUK
IFBBU1MgaW5wdXRGaWVsZDMuaXNWYWxpZCBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxk
LWV4cG9zZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Ry
ZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBpZiBhIHRy
ZWVpdGVtIGNvbnRhaW5zIGFuIGVsZW1lbnQgb3RoZXIgdGhhbiBzdGF0aWMgdGV4dCwgaXQgc2hv
dWxkIGJlIGV4cG9zZWQiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKLSAgICAJLy8gdHJlZSBzaG91bGQgb25seSBoYXZlIDIgY2hpbGQsIHNpbmNlIG9ubHkg
dHJlZWl0ZW0gb3Igc3RhdGljIHRleHQgY2FuIGJlIGEgdHJlZSdzIGNoaWxkCisgICAgCS8vIHRy
ZWUgc2hvdWxkIG9ubHkgaGF2ZSAzIGNoaWxkLCBzaW5jZSBtYWxmb3JtZWQgdHJlZSBzaG91bGQg
YWxzbyBiZSBhY2Nlc3NpYmxlLgogICAgICAgICB2YXIgdHJlZSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidHJlZSIpOwotICAgICAgICBzaG91bGRCZSgi
dHJlZS5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyZWUuY2hpbGRy
ZW5Db3VudCIsICIzIik7CiAgICAgICAgIAogICAgICAgICAvLyBpbnB1dCBmaWxlZCBpbiB0cmVl
aXRlbTEgc2hvdWxkIGJlIGV4cG9zZWQKICAgICAgICAgdmFyIGlucHV0RmllbGQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlucHV0MSIpOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACitFbnRyeSBBCisKKwordGV4dAor
Cit0ZXh0CitUaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3JtZWQgdHJlZSBpcyBhY2Nlc3NpYmxlLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0cmVlMS5zdWJyb2xlIGlzICJB
WFN1YnJvbGU6IEFYTWFsZm9ybWVkIgorUEFTUyB0cmVlMi5zdWJyb2xlIGlzICJBWFN1YnJvbGU6
IEFYTWFsZm9ybWVkIgorUEFTUyBpdGVtQSAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUIgIT0g
bnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1DICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRCAhPSBu
dWxsIGlzIHRydWUKK1BBU1MgaXRlbUUgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1GICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZv
cm1lZC10cmVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+ICAgCisgICAgICAgIAorPHVsIGlkPSJtYWxmb3JtZWRUcmVlMSIgcm9sZT0idHJlZSI+Cis8
bGkgcm9sZT0idHJlZWl0ZW0iPgorPHNwYW4+PGEgaWQ9IklURU1fQSIgaHJlZj0iaHR0cDovL2Fw
cGxlLmNvbSI+RW50cnkgQTwvYT48L3NwYW4+Cis8L2xpPgorPGxpPjxpbnB1dCBpZD0iSVRFTV9C
Ij48L2xpPgorPC91bD4KKworPHVsIGlkPSJtYWxmb3JtZWRUcmVlMiIgcm9sZT0idHJlZSI+Cis8
bGk+PGlucHV0IGlkPSJJVEVNX0MiPjwvbGk+Cis8bGkgaWQ9IklURU1fRCI+dGV4dDwvbGk+Cis8
L3VsPgorCis8dWwgaWQ9Im1hbGZvcm1lZFRyZWUzIj4KKzxsaSByb2xlPSJ0cmVlaXRlbSI+PGlu
cHV0IGlkPSJJVEVNX0UiPjwvbGk+Cis8bGkgcm9sZT0idHJlZWl0ZW0iIGlkPSJJVEVNX0YiPnRl
eHQ8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBh
IG1hbGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuIikKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworCisgICAgLy8gVHJ5IHRvIGZvY3VzIG9uIHRoZSBlbGVtZW50Lgor
ICAgIHZhciB0cmVlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgibWFsZm9ybWVkVHJlZTEiKTsKKyAgICBzaG91bGRCZSgidHJlZTEuc3Vicm9sZSIsICJc
IkFYU3Vicm9sZTogQVhNYWxmb3JtZWRcIiIpOworICAgIHZhciB0cmVlMiA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWFsZm9ybWVkVHJlZTIiKTsKKyAg
ICBzaG91bGRCZSgidHJlZTIuc3Vicm9sZSIsICJcIkFYU3Vicm9sZTogQVhNYWxmb3JtZWRcIiIp
OworCisgICAgdmFyIGl0ZW1BID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJJVEVNX0EiKTsKKyAgICB2YXIgaXRlbUIgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQiIpOworICAgIHZhciBpdGVtQyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9DIik7Cisg
ICAgdmFyIGl0ZW1EID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJJVEVNX0QiKTsKKyAgICB2YXIgaXRlbUUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRSIpOworICAgIHZhciBpdGVtRiA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9GIik7CisgICAgCisg
ICAgc2hvdWxkQmVUcnVlKCJpdGVtQSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVt
QiAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQyAhPSBudWxsIik7CisgICAgc2hv
dWxkQmVUcnVlKCJpdGVtRCAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRSAhPSBu
dWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRiAhPSBudWxsIik7Cit9CisKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257515</attachid>
            <date>2015-07-25 11:04:46 -0700</date>
            <delta_ts>2015-07-25 15:51:19 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13121</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA3LTI1ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiB0aGUgbWFsZm9ybWVkIHRy
ZWVzLiBGaXhlZCBpdCBieSBpZ25vcmluZworICAgICAgICB0aGUgdHJlZS90cmVlaXRlbSBhdHRy
aWJ1dGUgcm9sZSBmb3IgdGhlIG1hbGZvcm1lZCB0cmVlcy4gQWxzbyBhZGRlZCBBWE1hbGZvcm1l
ZAorICAgICAgICBzdWJyb2xlIHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1ZhbGlkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc01hbGZvcm1lZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNNYWxmb3JtZWRUcmVlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXJrVHJlZUl0ZW1JZ25vcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlnbm9yZVRyZWVJdGVtUm9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWYWxpZFRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aWdub3JlVHJlZUl0ZW1S
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENo
aWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
c3Vicm9sZV0pOgorCiAyMDE1LTA3LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFub3RoZXIgYnVpbGQgZml4LiBSZW1vdmVkIHRoZSB1bnVzZWQgYXJndW1l
bnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNyAr
MTAwMywxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAjZW5kaWYKLSAgICAK
KyAgICAvLyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIGEgbWFsZm9ybWVkIHRyZWUgYW5kIGlnbm9y
ZSB0cmVlL3RyZWVpdGVtIHJvbGVzCisgICAgdmlydHVhbCBib29sIGlzVmFsaWRUcmVlKCkgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWUoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWVJdGVtKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWFya1RyZWVJdGVtSWdu
b3JlZCgpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgaWdub3JlVHJlZUl0ZW1Sb2xlKCkgeyB9Owor
CiBwcm90ZWN0ZWQ6CiAgICAgQVhJRCBtX2lkOwogICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBtX2NoaWxkcmVuOwpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxODcy
NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkxLDcgKzExOTEsOSBAQCBib29sIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAogICAgIC8vIEFuIEFSSUEgdHJlZSBjYW4gb25seSBoYXZlIHRyZWUgaXRlbXMgYW5kIHN0YXRp
YyB0ZXh0IGFzIGNoaWxkcmVuLgotICAgIGlmICghaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSkKKyAg
ICAvLyBGb3IgdGhlIGZpcnN0IHRpbWUgYnVpbGRpbmcgdGhlIHRyZWUsIHdlIGFkZCBhbGwgdGhl
IGNoaWxkIG5vZGVzIHRvIHRoZSB0cmVlLCBiZWNhdXNlCisgICAgLy8gd2UgbmVlZCB0byB1c2Ug
dGhlIGNoaWxkcmVuIHRvIGRldGVybWluZSB0aGUgdmFsaWQgdHJlZS4KKyAgICBpZiAobV9pc1Ry
ZWVWYWxpZGF0ZWQgJiYgIWlzQWxsb3dlZENoaWxkT2ZUcmVlKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gQWxsb3cgdGhlIHBsYXRmb3JtIHRvIGRlY2lkZSBpZiB0aGUgYXR0YWNo
bWVudCBpcyBpZ25vcmVkIG9yIG5vdC4KQEAgLTI0OTcsNyArMjQ5OSwxMiBAQCBBY2Nlc3NpYmls
aXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gVW5rbm93blJvbGU7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1p
bmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBtX2FyaWFSb2xlID0g
ZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKKworICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUg
cm9sZSBpcyB0cmVlaXRlbSBidXQgdGhlIHBhcmVudCB0cmVlIGlzIG1hbGZvcm1lZCwgd2Ugc2hv
dWxkIGlnbm9yZSB0aGUKKyAgICAvLyBhdHRyaWJ1dGUgcm9sZS4KKyAgICBib29sIHNob3VsZEln
bm9yZUFyaWFSb2xlID0gKG1fYXJpYVJvbGUgPT0gVHJlZUl0ZW1Sb2xlICYmIGlzTWFsZm9ybWVk
VHJlZUl0ZW0oKSk7CisgICAgaWYgKG1fYXJpYVJvbGUgIT0gVW5rbm93blJvbGUgJiYgIXNob3Vs
ZElnbm9yZUFyaWFSb2xlKQogICAgICAgICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBO
b2RlKiBub2RlID0gbV9yZW5kZXJlci0+bm9kZSgpOwpAQCAtMzEwNyw2ICszMTE0LDUyIEBAIHZv
aWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlUm8KICAgICAgICAgaWYgKCFtZW51
SXRlbUNvdW50KQogICAgICAgICAgICAgbV9yb2xlID0gR3JvdXBSb2xlOwogICAgIH0KKworICAg
IC8vIHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGEgdHJlZSBpcyB2YWxpZC4KKyAgICBpZiAocm9s
ZVZhbHVlKCkgPT0gVHJlZVJvbGUpIHsKKyAgICAgICAgbV9pc01hbGZvcm1lZFRyZWUgPSAhaXNW
YWxpZFRyZWUoKTsKKworICAgICAgICBpZiAoIW1faXNUcmVlVmFsaWRhdGVkKQorICAgICAgICAg
ICAgbV9pc1RyZWVWYWxpZGF0ZWQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGlzTWFs
Zm9ybWVkVHJlZSgpKQorICAgICAgICAgICAgbV9yb2xlID0gR3JvdXBSb2xlOworICAgICAgICBl
bHNlCisgICAgICAgICAgICAvLyByZWJ1aWxkIHRoZSB0cmVlIHRvIGhhdmUgdGhlIGNvcnJlY3Qg
Y2hpbGRyZW4uCisgICAgICAgICAgICB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpOworICAgIH0K
KyAgICAvLyB3ZSBhbHNvIG5lZWQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSByb2xlcyBpZiB0aGUg
dHJlZSBpcyBtYWxmb3JtZWQuCisgICAgaWYgKGlzTWFsZm9ybWVkVHJlZSgpKQorICAgICAgICBp
Z25vcmVUcmVlSXRlbVJvbGUoKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc1ZhbGlkVHJlZSgpCit7CisgICAgLy8gQSB2YWxpZCB0cmVlIGNhbiBvbmx5IGhhdmUgdHJl
ZWl0ZW0gb3IgZ3JvdXAgb2YgdHJlZWl0ZW1zIGFzIGNoaWxkCisgICAgLy8gaHR0cDovL3d3dy53
My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjdHJlZQorICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQg
OiBjaGlsZHJlbigpKSB7CisgICAgICAgIGlmICghY2hpbGQtPmlzVHJlZUl0ZW0oKSAmJiAhY2hp
bGQtPmlzR3JvdXAoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGNo
aWxkLT5pc0dyb3VwKCkpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZ3JvdXBDaGls
ZCA6IGNoaWxkLT5jaGlsZHJlbigpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFncm91cENoaWxk
LT5pc1RyZWVJdGVtKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjppZ25vcmVUcmVlSXRlbVJvbGUoKQoreworCisgICAg
aWYgKGlzVHJlZUl0ZW0oKSkgeworICAgICAgICBtYXJrVHJlZUl0ZW1JZ25vcmVkKCk7CisgICAg
ICAgIG1fcm9sZSA9IGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgfQorCisgICAg
Zm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxkLT5pZ25v
cmVUcmVlSXRlbVJvbGUoKTsKIH0KICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6YWRkQ2hpbGRyZW4oKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDE4NzI3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYsNyArMzM2LDE4IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIG1hdGhQb3N0c2NyaXB0cyhBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFp
cnMmKSBvdmVycmlkZTsKICAgICAKICAgICBib29sIGlzSWdub3JlZEVsZW1lbnRXaXRoaW5NYXRo
VHJlZSgpIGNvbnN0OworCisgICAgLy8gZnVuY3Rpb25zIHRvIGRldGVybWluZSBhIG1hbGZvcm1l
ZCB0cmVlIGFuZCBpZ25vcmUgdHJlZS90cmVlaXRlbSByb2xlcworICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkVHJlZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVUcmVlSXRlbVJv
bGUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbWFya1RyZWVJdGVtSWdub3JlZCgpIG92
ZXJyaWRlIHsgbV9pc01hbGZvcm1lZFRyZWVJdGVtID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBpc01hbGZvcm1lZFRyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzTWFsZm9ybWVk
VHJlZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWVJdGVtKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pc01hbGZvcm1lZFRyZWVJdGVtOyB9CiAjZW5kaWYKK3Byb3RlY3Rl
ZDoKKyAgICBib29sIG1faXNNYWxmb3JtZWRUcmVlID0gZmFsc2U7CisgICAgYm9vbCBtX2lzTWFs
Zm9ybWVkVHJlZUl0ZW0gPSBmYWxzZTsKKyAgICBib29sIG1faXNUcmVlVmFsaWRhdGVkID0gZmFs
c2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIwNTMsNiArMjA1Myw5IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xl
CiAgICAgCiAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCiAgICAgICAgIHJldHVybiBO
U0FjY2Vzc2liaWxpdHlPdXRsaW5lUm93U3Vicm9sZTsKKworICAgIGlmIChtX29iamVjdC0+aXNN
YWxmb3JtZWRUcmVlKCkpCisgICAgICAgIHJldHVybiBAIkFYTWFsZm9ybWVkIjsKICAgICAKICAg
ICBpZiAobV9vYmplY3QtPmlzRmllbGRzZXQoKSkKICAgICAgICAgcmV0dXJuIEAiQVhGaWVsZHNl
dCI7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODczODkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNy0yNSAgTmFuIFdhbmcgIDxu
X3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBWb2ljZU92ZXIgdW5hYmxlIHRvIGFjY2Vz
cyBjb250ZW50IGluIG1hbGZvcm1lZCB0cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3Mjk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDg2
Mjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sOiBB
ZGRlZC4KKwogMjAxNS0wNy0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2luXSBUZXN0IHJlc3VsdHMgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwJKHJldmlzaW9uIDE4NzI3OCkK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xMiw3ICsxMiw3IEBACiA8ZGl2IGlkPSJkb2N1bWVudCIgcm9sZT0iZG9jdW1l
bnQiPmRvY3VtZW50IHJvbGU8L2Rpdj4KIDxkaXYgaWQ9InN0YXR1cyIgcm9sZT0ic3RhdHVzIj5z
dGF0dXMgcm9sZTwvZGl2PgogPGRpdiBpZD0idG9vbHRpcCIgcm9sZT0idG9vbHRpcCI+dG9vbHRp
cCByb2xlPC9kaXY+Ci08ZGl2IGlkPSJ0cmVlIiByb2xlPSJ0cmVlIj50cmVlIHJvbGU8L2Rpdj4K
KzxkaXYgaWQ9InRyZWUiIHJvbGU9InRyZWUiPjxkaXYgcm9sZT0idHJlZWl0ZW0iPnRyZWUgcm9s
ZTwvZGl2PjwvZGl2PgogPGRpdiBpZD0idHJlZWl0ZW0iIHJvbGU9InRyZWVpdGVtIj50cmVlaXRl
bSByb2xlPC9kaXY+CiA8YnI+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KSW5kZXg6IExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1l
eHBvc2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNiw3ICs2LDcgQEAgVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFu
IGVsZQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdHJlZS5jaGlsZHJlbkNv
dW50IGlzIDIKK1BBU1MgdHJlZS5jaGlsZHJlbkNvdW50IGlzIDMKIFBBU1MgaW5wdXRGaWVsZC5p
c1ZhbGlkIGlzIHRydWUKIFBBU1MgaW5wdXRGaWVsZDMuaXNWYWxpZCBpcyB0cnVlCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAkocmV2aXNpb24gMTg3Mjc4
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFuIGVsZW1lbnQgb3RoZXIgdGhhbiBzdGF0
aWMgdGV4dCwgaXQgc2hvdWxkIGJlIGV4cG9zZWQiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAJLy8gdHJlZSBzaG91bGQgb25seSBoYXZlIDIgY2hp
bGQsIHNpbmNlIG9ubHkgdHJlZWl0ZW0gb3Igc3RhdGljIHRleHQgY2FuIGJlIGEgdHJlZSdzIGNo
aWxkCisgICAgCS8vIHRyZWUgc2hvdWxkIG9ubHkgaGF2ZSAzIGNoaWxkLCBzaW5jZSBtYWxmb3Jt
ZWQgdHJlZSBzaG91bGQgYWxzbyBiZSBhY2Nlc3NpYmxlLgogICAgICAgICB2YXIgdHJlZSA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidHJlZSIpOwotICAg
ICAgICBzaG91bGRCZSgidHJlZS5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAgc2hvdWxk
QmUoInRyZWUuY2hpbGRyZW5Db3VudCIsICIzIik7CiAgICAgICAgIAogICAgICAgICAvLyBpbnB1
dCBmaWxlZCBpbiB0cmVlaXRlbTEgc2hvdWxkIGJlIGV4cG9zZWQKICAgICAgICAgdmFyIGlucHV0
RmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlu
cHV0MSIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFs
Zm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1l
ZC10cmVlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACitFbnRy
eSBBCisKKwordGV4dAorCit0ZXh0CitUaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3JtZWQgdHJlZSBp
cyBhY2Nlc3NpYmxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0cmVl
MS5zdWJyb2xlIGlzICJBWFN1YnJvbGU6IEFYTWFsZm9ybWVkIgorUEFTUyB0cmVlMi5zdWJyb2xl
IGlzICJBWFN1YnJvbGU6IEFYTWFsZm9ybWVkIgorUEFTUyBpdGVtQSAhPSBudWxsIGlzIHRydWUK
K1BBU1MgaXRlbUIgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1DICE9IG51bGwgaXMgdHJ1ZQor
UEFTUyBpdGVtRCAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUUgIT0gbnVsbCBpcyB0cnVlCitQ
QVNTIGl0ZW1GICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10
cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+ICAgCisgICAgICAgIAorPHVsIGlkPSJtYWxmb3JtZWRUcmVlMSIg
cm9sZT0idHJlZSI+Cis8bGkgcm9sZT0idHJlZWl0ZW0iPgorPHNwYW4+PGEgaWQ9IklURU1fQSIg
aHJlZj0iaHR0cDovL2FwcGxlLmNvbSI+RW50cnkgQTwvYT48L3NwYW4+Cis8L2xpPgorPGxpPjxp
bnB1dCBpZD0iSVRFTV9CIj48L2xpPgorPC91bD4KKworPHVsIGlkPSJtYWxmb3JtZWRUcmVlMiIg
cm9sZT0idHJlZSI+Cis8bGk+PGlucHV0IGlkPSJJVEVNX0MiPjwvbGk+Cis8bGkgaWQ9IklURU1f
RCI+dGV4dDwvbGk+Cis8L3VsPgorCis8dWwgaWQ9Im1hbGZvcm1lZFRyZWUzIj4KKzxsaSByb2xl
PSJ0cmVlaXRlbSI+PGlucHV0IGlkPSJJVEVNX0UiPjwvbGk+Cis8bGkgcm9sZT0idHJlZWl0ZW0i
IGlkPSJJVEVNX0YiPnRleHQ8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdHMgdGhhdCBhIG1hbGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuIikKKworaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgLy8gVHJ5IHRvIGZvY3VzIG9u
IHRoZSBlbGVtZW50LgorICAgIHZhciB0cmVlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgibWFsZm9ybWVkVHJlZTEiKTsKKyAgICBzaG91bGRCZSgidHJl
ZTEuc3Vicm9sZSIsICJcIkFYU3Vicm9sZTogQVhNYWxmb3JtZWRcIiIpOworICAgIHZhciB0cmVl
MiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWFsZm9y
bWVkVHJlZTIiKTsKKyAgICBzaG91bGRCZSgidHJlZTIuc3Vicm9sZSIsICJcIkFYU3Vicm9sZTog
QVhNYWxmb3JtZWRcIiIpOworCisgICAgdmFyIGl0ZW1BID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJJVEVNX0EiKTsKKyAgICB2YXIgaXRlbUIgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQiIpOworICAg
IHZhciBpdGVtQyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiSVRFTV9DIik7CisgICAgdmFyIGl0ZW1EID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJJVEVNX0QiKTsKKyAgICB2YXIgaXRlbUUgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRSIpOworICAgIHZhciBp
dGVtRiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRF
TV9GIik7CisgICAgCisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQSAhPSBudWxsIik7CisgICAgc2hv
dWxkQmVUcnVlKCJpdGVtQiAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQyAhPSBu
dWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRCAhPSBudWxsIik7CisgICAgc2hvdWxkQmVU
cnVlKCJpdGVtRSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRiAhPSBudWxsIik7
Cit9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257519</attachid>
            <date>2015-07-25 15:51:19 -0700</date>
            <delta_ts>2015-07-27 14:43:28 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>13505</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzM4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA3LTI1ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiB0aGUgbWFsZm9ybWVkIHRy
ZWVzLiBGaXhlZCBpdCBieSBpZ25vcmluZworICAgICAgICB0aGUgdHJlZS90cmVlaXRlbSBhdHRy
aWJ1dGUgcm9sZSBmb3IgdGhlIG1hbGZvcm1lZCB0cmVlcy4gQWxzbyBhZGRlZCBBWE1hbGZvcm1l
ZAorICAgICAgICBzdWJyb2xlIHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAorCisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0Ojppc1ZhbGlkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojppc01hbGZvcm1lZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdDo6aXNNYWxmb3JtZWRUcmVlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjptYXJrVHJlZUl0ZW1JZ25vcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omlnbm9yZVRyZWVJdGVtUm9sZSk6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRl
dGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNWYWxpZFRyZWUpOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aWdub3JlVHJlZUl0ZW1S
b2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENo
aWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
c3Vicm9sZV0pOgorCiAyMDE1LTA3LTI1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFub3RoZXIgYnVpbGQgZml4LiBSZW1vdmVkIHRoZSB1bnVzZWQgYXJndW1l
bnQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuaAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNyAr
MTAwMywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYXJldEJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0
OwogICAgIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAjZW5kaWYKLSAgICAK
KyAgICAvLyBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIGEgbWFsZm9ybWVkIHRyZWUgYW5kIHRvIGln
bm9yZSB0cmVlL3RyZWVpdGVtIHJvbGVzCisgICAgdmlydHVhbCBib29sIGlzVmFsaWRUcmVlKCkg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1lZFRyZWVJdGVt
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNUcmVlVmFsaWRh
dGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBtYXJrVHJlZUl0
ZW1JZ25vcmVkKCkgeyB9OworICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVUcmVlSXRlbVJvbGUoKSB7
IH07CisKIHByb3RlY3RlZDoKICAgICBBWElEIG1faWQ7CiAgICAgQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yIG1fY2hpbGRyZW47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9u
IDE4NzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMTUsNyArMTExNSw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBbGxvd2UKICAgICB3aGlsZSAoYXhPYmopIHsK
ICAgICAgICAgaWYgKGF4T2JqLT5yb2xlVmFsdWUoKSA9PSBUcmVlSXRlbVJvbGUpCiAgICAgICAg
ICAgICBpc1RyZWVJdGVtRGVzY2VuZGFudCA9IHRydWU7Ci0gICAgICAgIGlmIChheE9iai0+aXNU
cmVlKCkpIHsKKyAgICAgICAgaWYgKGF4T2JqLT5pc1RyZWUoKSAmJiBheE9iai0+aXNUcmVlVmFs
aWRhdGVkKCkpIHsKICAgICAgICAgICAgIGlzSW5UcmVlID0gdHJ1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0xMTkxLDYgKzExOTEsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNvbXB1dGVBCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8v
IEFuIEFSSUEgdHJlZSBjYW4gb25seSBoYXZlIHRyZWUgaXRlbXMgYW5kIHN0YXRpYyB0ZXh0IGFz
IGNoaWxkcmVuLgorICAgIC8vIEZvciB0aGUgZmlyc3QgdGltZSBidWlsZGluZyB0aGUgdHJlZSwg
d2UgYWRkIGFsbCB0aGUgY2hpbGQgbm9kZXMgdG8gdGhlIHRyZWUsIGJlY2F1c2UKKyAgICAvLyB3
ZSBuZWVkIHRvIHVzZSB0aGUgY2hpbGRyZW4gdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZCB0cmVlLgog
ICAgIGlmICghaXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
QEAgLTI0OTcsNyArMjQ5OSwxMiBAQCBBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqCiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7
CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAh
PSBVbmtub3duUm9sZSkKKyAgICBtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1
dGUoKTsKKworICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUgcm9sZSBpcyB0cmVlaXRlbSBidXQgdGhl
IHBhcmVudCB0cmVlIGlzIG1hbGZvcm1lZCwgd2Ugc2hvdWxkIGlnbm9yZSB0aGUKKyAgICAvLyBh
dHRyaWJ1dGUgcm9sZS4KKyAgICBib29sIHNob3VsZElnbm9yZUFyaWFSb2xlID0gKG1fYXJpYVJv
bGUgPT0gVHJlZUl0ZW1Sb2xlICYmIGlzTWFsZm9ybWVkVHJlZUl0ZW0oKSk7CisgICAgaWYgKG1f
YXJpYVJvbGUgIT0gVW5rbm93blJvbGUgJiYgIXNob3VsZElnbm9yZUFyaWFSb2xlKQogICAgICAg
ICByZXR1cm4gbV9hcmlhUm9sZTsKICAgICAKICAgICBOb2RlKiBub2RlID0gbV9yZW5kZXJlci0+
bm9kZSgpOwpAQCAtMzEwNyw2ICszMTE0LDUyIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6dXBkYXRlUm8KICAgICAgICAgaWYgKCFtZW51SXRlbUNvdW50KQogICAgICAgICAgICAg
bV9yb2xlID0gR3JvdXBSb2xlOwogICAgIH0KKworICAgIC8vIHdlIG5lZWQgdG8gZGV0ZXJtaW5l
IGlmIGEgdHJlZSBpcyB2YWxpZC4KKyAgICBpZiAocm9sZVZhbHVlKCkgPT0gVHJlZVJvbGUpIHsK
KyAgICAgICAgbV9pc01hbGZvcm1lZFRyZWUgPSAhaXNWYWxpZFRyZWUoKTsKKyAgICAgICAgCisg
ICAgICAgIGlmIChpc01hbGZvcm1lZFRyZWUoKSkKKyAgICAgICAgICAgIG1fcm9sZSA9IEdyb3Vw
Um9sZTsKKyAgICAgICAgZWxzZSBpZiAoIWlzVHJlZVZhbGlkYXRlZCgpKSB7CisgICAgICAgICAg
ICBtX2lzVHJlZVZhbGlkYXRlZCA9IHRydWU7CisgICAgICAgICAgICAvLyByZWJ1aWxkIHRoZSB0
cmVlIHRvIGhhdmUgdGhlIGNvcnJlY3QgY2hpbGRyZW4uCisgICAgICAgICAgICBtX2NoaWxkcmVu
RGlydHkgPSB0cnVlOworICAgICAgICAgICAgdXBkYXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOwor
ICAgICAgICB9CisgICAgfQorICAgIC8vIHdlIGFsc28gbmVlZCB0byBpZ25vcmUgdGhlIHRyZWVp
dGVtIHJvbGVzIGlmIHRoZSB0cmVlIGlzIG1hbGZvcm1lZC4KKyAgICBpZiAoaXNNYWxmb3JtZWRU
cmVlKCkpCisgICAgICAgIGlnbm9yZVRyZWVJdGVtUm9sZSgpOworfQorCitib29sIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmlzVmFsaWRUcmVlKCkKK3sKKyAgICAvLyBBIHZhbGlkIHRyZWUg
Y2FuIG9ubHkgaGF2ZSB0cmVlaXRlbSBvciBncm91cCBvZiB0cmVlaXRlbXMgYXMgY2hpbGQKKyAg
ICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS9yb2xlcyN0cmVlCisgICAgZm9yIChj
b25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKCFjaGlsZC0+aXNU
cmVlSXRlbSgpICYmICFjaGlsZC0+aXNHcm91cCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoY2hpbGQtPmlzR3JvdXAoKSkgeworICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBncm91cENoaWxkIDogY2hpbGQtPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIWdyb3VwQ2hpbGQtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omlnbm9yZVRyZWVJdGVt
Um9sZSgpCit7CisKKyAgICBpZiAoaXNUcmVlSXRlbSgpKSB7CisgICAgICAgIG1hcmtUcmVlSXRl
bUlnbm9yZWQoKTsKKyAgICAgICAgbV9yb2xlID0gZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRyZW4oKSkKKyAg
ICAgICAgY2hpbGQtPmlnbm9yZVRyZWVJdGVtUm9sZSgpOwogfQogICAgIAogdm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjphZGRDaGlsZHJlbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAko
cmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsMTkgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRQYWlycyYpIG92ZXJyaWRlOwogICAgIAogICAgIGJvb2wgaXNJZ25vcmVk
RWxlbWVudFdpdGhpbk1hdGhUcmVlKCkgY29uc3Q7CisKKyAgICAvLyBmdW5jdGlvbnMgdG8gZGV0
ZXJtaW5lIGEgbWFsZm9ybWVkIHRyZWUgYW5kIHRvIGlnbm9yZSB0cmVlL3RyZWVpdGVtIHJvbGVz
CisgICAgdmlydHVhbCBib29sIGlzVmFsaWRUcmVlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBi
b29sIGlzVHJlZVZhbGlkYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUcmVlVmFs
aWRhdGVkOyB9CisgICAgdmlydHVhbCBib29sIGlzTWFsZm9ybWVkVHJlZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNNYWxmb3JtZWRUcmVlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWFs
Zm9ybWVkVHJlZUl0ZW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzTWFsZm9ybWVkVHJl
ZUl0ZW07IH0KKyAgICB2aXJ0dWFsIHZvaWQgbWFya1RyZWVJdGVtSWdub3JlZCgpIG92ZXJyaWRl
IHsgbV9pc01hbGZvcm1lZFRyZWVJdGVtID0gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBpZ25v
cmVUcmVlSXRlbVJvbGUoKSBvdmVycmlkZTsKICNlbmRpZgorcHJpdmF0ZToKKyAgICBib29sIG1f
aXNNYWxmb3JtZWRUcmVlID0gZmFsc2U7CisgICAgYm9vbCBtX2lzTWFsZm9ybWVkVHJlZUl0ZW0g
PSBmYWxzZTsKKyAgICBib29sIG1faXNUcmVlVmFsaWRhdGVkID0gZmFsc2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTIwNTMsNiArMjA1Myw5IEBAIC0gKE5TU3RyaW5nKilzdWJyb2xlCiAgICAgCiAgICAgaWYg
KG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCiAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlP
dXRsaW5lUm93U3Vicm9sZTsKKworICAgIGlmIChtX29iamVjdC0+aXNNYWxmb3JtZWRUcmVlKCkp
CisgICAgICAgIHJldHVybiBAIkFYTWFsZm9ybWVkIjsKICAgICAKICAgICBpZiAobV9vYmplY3Qt
PmlzRmllbGRzZXQoKSkKICAgICAgICAgcmV0dXJuIEAiQVhGaWVsZHNldCI7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxODczODkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNyBAQAorMjAxNS0wNy0yNSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29t
PgorCisgICAgICAgIEFYOiBWb2ljZU92ZXIgdW5hYmxlIHRvIGFjY2VzcyBjb250ZW50IGluIG1h
bGZvcm1lZCB0cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ3Mjk1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDg2Mjg5Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXJpYS1tYXBwaW5ncy5odG1sOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hp
bGQtZXhwb3NlZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90cmVlaXRl
bS1jaGlsZC1leHBvc2VkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sOiBBZGRlZC4KKwogMjAxNS0w
Ny0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2lu
XSBUZXN0IHJlc3VsdHMgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hcmlhLW1hcHBpbmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwJKHJldmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw3
ICsxMiw3IEBACiA8ZGl2IGlkPSJkb2N1bWVudCIgcm9sZT0iZG9jdW1lbnQiPmRvY3VtZW50IHJv
bGU8L2Rpdj4KIDxkaXYgaWQ9InN0YXR1cyIgcm9sZT0ic3RhdHVzIj5zdGF0dXMgcm9sZTwvZGl2
PgogPGRpdiBpZD0idG9vbHRpcCIgcm9sZT0idG9vbHRpcCI+dG9vbHRpcCByb2xlPC9kaXY+Ci08
ZGl2IGlkPSJ0cmVlIiByb2xlPSJ0cmVlIj50cmVlIHJvbGU8L2Rpdj4KKzxkaXYgaWQ9InRyZWUi
IHJvbGU9InRyZWUiPjxkaXYgcm9sZT0idHJlZWl0ZW0iPnRyZWUgcm9sZTwvZGl2PjwvZGl2Pgog
PGRpdiBpZD0idHJlZWl0ZW0iIHJvbGU9InRyZWVpdGVtIj50cmVlaXRlbSByb2xlPC9kaXY+CiA8
YnI+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVl
aXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2
LDcgQEAgVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFuIGVsZQogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdHJlZS5jaGlsZHJlbkNvdW50IGlzIDIKK1BBU1Mg
dHJlZS5jaGlsZHJlbkNvdW50IGlzIDMKIFBBU1MgaW5wdXRGaWVsZC5pc1ZhbGlkIGlzIHRydWUK
IFBBU1MgaW5wdXRGaWVsZDMuaXNWYWxpZCBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxk
LWV4cG9zZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Ry
ZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBpZiBhIHRy
ZWVpdGVtIGNvbnRhaW5zIGFuIGVsZW1lbnQgb3RoZXIgdGhhbiBzdGF0aWMgdGV4dCwgaXQgc2hv
dWxkIGJlIGV4cG9zZWQiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKLSAgICAJLy8gdHJlZSBzaG91bGQgb25seSBoYXZlIDIgY2hpbGQsIHNpbmNlIG9ubHkg
dHJlZWl0ZW0gb3Igc3RhdGljIHRleHQgY2FuIGJlIGEgdHJlZSdzIGNoaWxkCisgICAgCS8vIHRy
ZWUgc2hvdWxkIG9ubHkgaGF2ZSAzIGNoaWxkLCBzaW5jZSBtYWxmb3JtZWQgdHJlZSBzaG91bGQg
YWxzbyBiZSBhY2Nlc3NpYmxlLgogICAgICAgICB2YXIgdHJlZSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidHJlZSIpOwotICAgICAgICBzaG91bGRCZSgi
dHJlZS5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyZWUuY2hpbGRy
ZW5Db3VudCIsICIzIik7CiAgICAgICAgIAogICAgICAgICAvLyBpbnB1dCBmaWxlZCBpbiB0cmVl
aXRlbTEgc2hvdWxkIGJlIGV4cG9zZWQKICAgICAgICAgdmFyIGlucHV0RmllbGQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlucHV0MSIpOwpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACitFbnRyeSBBCisKKwordGV4dAor
Cit0ZXh0CitUaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3JtZWQgdHJlZSBpcyBhY2Nlc3NpYmxlLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0cmVlMS5zdWJyb2xlIGlzICJB
WFN1YnJvbGU6IEFYTWFsZm9ybWVkIgorUEFTUyB0cmVlMi5zdWJyb2xlIGlzICJBWFN1YnJvbGU6
IEFYTWFsZm9ybWVkIgorUEFTUyBpdGVtQSAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUIgIT0g
bnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1DICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRCAhPSBu
dWxsIGlzIHRydWUKK1BBU1MgaXRlbUUgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1GICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZv
cm1lZC10cmVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+ICAgCisgICAgICAgIAorPHVsIGlkPSJtYWxmb3JtZWRUcmVlMSIgcm9sZT0idHJlZSI+Cis8
bGkgcm9sZT0idHJlZWl0ZW0iPgorPHNwYW4+PGEgaWQ9IklURU1fQSIgaHJlZj0iaHR0cDovL2Fw
cGxlLmNvbSI+RW50cnkgQTwvYT48L3NwYW4+Cis8L2xpPgorPGxpPjxpbnB1dCBpZD0iSVRFTV9C
Ij48L2xpPgorPC91bD4KKworPHVsIGlkPSJtYWxmb3JtZWRUcmVlMiIgcm9sZT0idHJlZSI+Cis8
bGk+PGlucHV0IGlkPSJJVEVNX0MiPjwvbGk+Cis8bGkgaWQ9IklURU1fRCI+dGV4dDwvbGk+Cis8
L3VsPgorCis8dWwgaWQ9Im1hbGZvcm1lZFRyZWUzIj4KKzxsaSByb2xlPSJ0cmVlaXRlbSI+PGlu
cHV0IGlkPSJJVEVNX0UiPjwvbGk+Cis8bGkgcm9sZT0idHJlZWl0ZW0iIGlkPSJJVEVNX0YiPnRl
eHQ8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBh
IG1hbGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuIikKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworCisgICAgLy8gVHJ5IHRvIGZvY3VzIG9uIHRoZSBlbGVtZW50Lgor
ICAgIHZhciB0cmVlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgibWFsZm9ybWVkVHJlZTEiKTsKKyAgICBzaG91bGRCZSgidHJlZTEuc3Vicm9sZSIsICJc
IkFYU3Vicm9sZTogQVhNYWxmb3JtZWRcIiIpOworICAgIHZhciB0cmVlMiA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWFsZm9ybWVkVHJlZTIiKTsKKyAg
ICBzaG91bGRCZSgidHJlZTIuc3Vicm9sZSIsICJcIkFYU3Vicm9sZTogQVhNYWxmb3JtZWRcIiIp
OworCisgICAgdmFyIGl0ZW1BID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJJVEVNX0EiKTsKKyAgICB2YXIgaXRlbUIgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQiIpOworICAgIHZhciBpdGVtQyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9DIik7Cisg
ICAgdmFyIGl0ZW1EID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJJVEVNX0QiKTsKKyAgICB2YXIgaXRlbUUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRSIpOworICAgIHZhciBpdGVtRiA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9GIik7CisgICAgCisg
ICAgc2hvdWxkQmVUcnVlKCJpdGVtQSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVt
QiAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQyAhPSBudWxsIik7CisgICAgc2hv
dWxkQmVUcnVlKCJpdGVtRCAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRSAhPSBu
dWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRiAhPSBudWxsIik7Cit9CisKKzwvc2NyaXB0
PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257593</attachid>
            <date>2015-07-27 14:43:28 -0700</date>
            <delta_ts>2015-07-27 15:04:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>32720</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTA3LTI3ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiB0aGUgbWFsZm9ybWVkIHRy
ZWVzLiBGaXhlZCBpdCBieSBpZ25vcmluZworICAgICAgICB0aGUgdHJlZS90cmVlaXRlbSBhdHRy
aWJ1dGUgcm9sZSBmb3IgdGhlIG1hbGZvcm1lZCB0cmVlcy4gQWxzbyBhZGRlZCBBWE1hbGZvcm1l
ZAorICAgICAgICBzdWJyb2xlIHRvIHRoZSBvYmplY3QuCisKKyAgICAgICAgVGVzdDogcGxhdGZv
cm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAorCisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcm9tUmVuZGVyZXIp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0FsbG93ZWRD
aGlsZE9mVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojppc01hbGZvcm1lZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFJlbmRlck9iamVjdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OkFjY2Vzc2liaWxpdHlUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjp+QWNjZXNzaWJpbGl0eVRyZWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VHJlZTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWluZUFjY2Vzc2li
aWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjppZ25vcmVJ
bnZhbGlkVHJlZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OnVw
ZGF0ZUNoaWxkcmVuUm9sZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VHJlZS5oOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVl
SXRlbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVt
OjpBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVRyZWVJdGVtOjp+QWNjZXNzaWJpbGl0eVRyZWVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlUcmVlSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlUcmVlSXRlbTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtOjptYXJrVHJlZUl0ZW1JbnZhbGlkKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oOiBBZGRlZC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0pOgor
CiAyMDE1LTA3LTI3ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjE4NzM4MwpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg3Mjc4
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00Mzk3LDYgKzQzOTcsMTAgQEAKIAkJQThFQTgwMEUwQTE5NTE2RTAw
QThFRjVGIC8qIE1lZGlhTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThFQTgwMDYwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlhTGlzdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4RkE2RTVEMEU0
Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEZBNkU1QjBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE4RkE2RTVF
MEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVDMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJu
LmNwcCAqLzsgfTsKKwkJQTkxQzlGQkUxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlU
cmVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5
MUM5RkJDMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgKi87IH07CisJ
CUE5MUM5RkJGMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTkxQzlGQkQxQjY1ODZERTAw
QUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggKi87IH07CisJCUE5MUM5RkMyMUI2NTlBNjcw
MEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTkxQzlGQzAxQjY1OUE2NzAwQUZGRDU0IC8qIEFj
Y2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAgKi87IH07CisJCUE5MUM5RkMzMUI2NTlBNjcwMEFGRkQ1
NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE5MUM5RkMxMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmls
aXR5VHJlZUl0ZW0uaCAqLzsgfTsKIAkJQTlDNkU0RTMwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1p
bWVUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE5QzZFNEUxMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgKi87IH07CiAJCUE5
QzZFNEU0MEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTlDNkU0RTIwRDc0NUUwNTAwNjQ0MkU5IC8q
IERPTU1pbWVUeXBlLmggKi87IH07CiAJCUE5QzZFNEU3MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01N
aW1lVHlwZUFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE5QzZFNEU1MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCAq
LzsgfTsKQEAgLTExNzkyLDYgKzExNzk2LDEwIEBACiAJCUE4RUE4MDA2MEExOTUxNkUwMEE4RUY1
RiAvKiBNZWRpYUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlh
TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEZBNkU1QjBFNENGREVEMDBE
NUNGNDkgLyogUGF0dGVybi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXR0
ZXJuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkE2RTVDMEU0Q0ZERUQwMEQ1
Q0Y0OSAvKiBQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFBhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOTFDOUZCQzFCNjU4
NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRyZWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBOTFDOUZCRDFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRy
ZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRyZWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTkxQzlGQzAxQjY1OUE2NzAwQUZGRDU0
IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBOTFDOUZDMTFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJ
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUcmVl
SXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2RTRFMTBENzQ1RTA1MDA2
NDQyRTkgLyogRE9NTWltZVR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTU1pbWVUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlD
NkU0RTIwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01NaW1lVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBOUM2RTRFNTBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NTWltZVR5cGVBcnJheS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc4MCw2ICsxNTc4OCwxMCBAQAogCQkJ
CTI5QTgxMjFEMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgg
Ki8sCiAJCQkJMjk4MUNBQTExMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmNw
cCAqLywKIAkJCQkyOUE4MTIwRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3Qu
aCAqLywKKwkJCQlBOTFDOUZCQzFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUu
Y3BwICovLAorCQkJCUE5MUM5RkJEMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJl
ZS5oICovLAorCQkJCUE5MUM5RkMwMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJl
ZUl0ZW0uY3BwICovLAorCQkJCUE5MUM5RkMxMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmls
aXR5VHJlZUl0ZW0uaCAqLywKIAkJCQkyOTgxQ0FBMjEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNz
aWJpbGl0eUxpc3RCb3guY3BwICovLAogCQkJCTI5QTgxMjI1MEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5TGlzdEJveC5oICovLAogCQkJCTI5ODFDQUEzMTMxODIyRUMwMEQxMkYyQSAv
KiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAgKi8sCkBAIC0yNjg1Myw2ICsyNjg2NSw3
IEBACiAJCQkJQjIyMjc5QzgwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQmxlbmRFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNFMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTkxQzlGQkYxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMjIyNzlEMTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxOTIxMzI3NTExQzBFNkJCMDA0NTYyMzggLyog
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OUQ0
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjczNTUsNiArMjczNjgsNyBAQAogCQkJCUIxMEI2OTgwMTQwQzE3NDAwMEJD
MUMyNiAvKiBXZWJWVFRUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjEwQjY5ODIxNDBDMTc0
MDAwQkMxQzI2IC8qIFdlYlZUVFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4MjAz
MTAxMzk1QUNFNzAwRjk1NkM2IC8qIFdlYldpbmRvd0FuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTkxQzlGQzMxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRjU1QjNERTAxMjUxRjEyRDAwM0VGMjY5IC8qIFdlZWtJbnB1
dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAvKiBX
aGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0VDNDRBMjE4OEY0QkI4MDA2NjFERjEg
LyogV2hlZWxFdmVudERlbHRhVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODk0Niw2ICsy
ODk2MCw3IEBACiAJCQkJMkVDRjdBREMxMDE2MkIzODAwNDI3REU3IC8qIEpTRXJyb3JFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlGM0Q0NjE0ODExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJv
ckhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFODM3ODQwOUY4NUQxQzAwQjg1QUU0
IC8qIEpTRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTkxQzlGQkUxQjY1ODZERTAwQUZG
RDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRUZBRjRF
MEMzMTdFNjkwMEZBODFGNiAvKiBKU0V2ZW50Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNjBEOUJGMEQyQTI2OUEwMEI5OTE4RiAvKiBKU0V2ZW50RXhjZXB0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTkzQjcwRDY5MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVuZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMDA2Miw2ICszMDA3Nyw3IEBACiAJCQkJMEZFNzE0MDUx
NDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1RDkyNUI2NzBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQmVoYXZpb3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUFBODRGMDQxNDNCQTdCRDAwNTFEMTUzIC8qIFNjcm9sbENvbnRyb2xs
ZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZENTQgLyogQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNjA1QUVDMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUY2MkVFNzE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZDNEU0MEUxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ0Nv
b3JkaW5hdG9ySU9TLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDE4NzI3OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDYgKzU1LDggQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJl
ZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9yLmgi
CkBAIC0yOTEsNiArMjkzLDEyIEBAIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gY3Jl
YXRlRnIKICAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgImdyaWRjZWxsIikgfHwgbm9kZUhhc1Jv
bGUobm9kZSwgImNlbGwiKSB8fCBub2RlSGFzUm9sZShub2RlLCAiY29sdW1uaGVhZGVyIikgfHwg
bm9kZUhhc1JvbGUobm9kZSwgInJvd2hlYWRlciIpKQogICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6Y3JlYXRlKHJlbmRlcmVyKTsKIAorICAgIC8vIGFyaWEgdHJlZQor
ICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAidHJlZSIpKQorICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVRyZWU6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUs
ICJ0cmVlaXRlbSIpKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpjcmVh
dGUocmVuZGVyZXIpOworCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIC8vIG1lZGlhIGNvbnRyb2xz
CiAgICAgaWYgKG5vZGUgJiYgbm9kZS0+aXNNZWRpYUNvbnRyb2xFbGVtZW50KCkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDE4NzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIgogI2lu
Y2x1ZGUgIkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRhYmxlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWUuaCIKICNpbmNsdWRlICJDYWNo
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRv
ci5oIgpAQCAtMTExNSw3ICsxMTE2LDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc0FsbG93ZQogICAgIHdoaWxlIChheE9iaikgewogICAgICAgICBpZiAoYXhPYmotPnJvbGVW
YWx1ZSgpID09IFRyZWVJdGVtUm9sZSkKICAgICAgICAgICAgIGlzVHJlZUl0ZW1EZXNjZW5kYW50
ID0gdHJ1ZTsKLSAgICAgICAgaWYgKGF4T2JqLT5pc1RyZWUoKSkgeworICAgICAgICAvLyBJZiB0
aGUgdHJlZSBoYXMgbm90IGJlZW4gdmFsaWRhdGVkIHlldCwgd2Ugd2FudCB0byBhZGQgYWxsIHRo
ZSBjaGlsZHJlbiBpbiBjYXNlIGl0J3MKKyAgICAgICAgLy8gYSBtYWxmb3JtZWQgdHJlZS4KKyAg
ICAgICAgaWYgKGF4T2JqLT5pc1RyZWUoKSAmJiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VHJlZT4o
KmF4T2JqKS5oYXNWYWxpZGF0ZWRUcmVlKCkpIHsKICAgICAgICAgICAgIGlzSW5UcmVlID0gdHJ1
ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yNDk3LDcgKzI1MDAsMTIgQEAg
QWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagogICAgIGlmICghbV9yZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOwogCi0gICAgaWYgKChtX2FyaWFSb2xl
ID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJvbGUpCisgICAgbV9h
cmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCk7CisKKyAgICAvLyBTb21ldGlt
ZXMgd2UgbmVlZCB0byBpZ25vcmUgdGhlIGF0dHJpYnV0ZSByb2xlLiBMaWtlIGlmIGEgdHJlZSBp
cyBtYWxmb3JtZWQsCisgICAgLy8gd2Ugd2FudCB0byBpZ25vcmUgdGhlIHRyZWUgYXR0cmlidXRl
IHJvbGUuCisgICAgYm9vbCBzaG91bGRJZ25vcmVBcmlhUm9sZSA9IHNob3VsZElnbm9yZUF0dHJp
YnV0ZVJvbGUoKTsKKyAgICBpZiAobV9hcmlhUm9sZSAhPSBVbmtub3duUm9sZSAmJiAhc2hvdWxk
SWdub3JlQXJpYVJvbGUpCiAgICAgICAgIHJldHVybiBtX2FyaWFSb2xlOwogICAgIAogICAgIE5v
ZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2
aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsyMDksMTAgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCBTdHJpbmcgcGFzc3dvcmRGaWVsZFZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKKyAgICAvLyBGdW5jdGlvbiB0byBkZXRlcm1pbmUgaWYgdGhlIGF0dHJpYnV0ZSBy
b2xlIHNob3VsZCBiZSBpZ25vcmVkCisgICAgdmlydHVhbCBib29sIGlzTWFsZm9ybWVkKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmli
dXRlUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCopOwogICAgIHZvaWQg
c2V0UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJl
bmRlcmVyOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUcmVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZS5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIgorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIK
KyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworI2luY2x1ZGUgPHF1ZXVlPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworICAgIAorQWNjZXNz
aWJpbGl0eVRyZWU6OkFjY2Vzc2liaWxpdHlUcmVlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCis6
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIpCit7Cit9CisgICAgCitBY2Nlc3Np
YmlsaXR5VHJlZTo6fkFjY2Vzc2liaWxpdHlUcmVlKCkKK3sKK30KKyAgICAKK1JlZjxBY2Nlc3Np
YmlsaXR5VHJlZT4gQWNjZXNzaWJpbGl0eVRyZWU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUcmVlKHJlbmRl
cmVyKSk7Cit9CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlUcmVlOjpjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWRCeURlZmF1bHQoKTsKK30KKworQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWU6
OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkKK3sKKyAgICBtX2FyaWFSb2xlID0gZGV0ZXJt
aW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKKworICAgIC8vIFRlbXBvcmFyaWx5IHNldCByb2xlIHNv
IHRoYXQgd2UgY2FuIHF1ZXJ5IGNoaWxkcmVuIChvdGhlcndpc2UgY2FuSGF2ZUNoaWxkcmVuIHJl
dHVybnMgZmFsc2UpLgorICAgIG1fcm9sZSA9IFRyZWVSb2xlOworCisgICAgLy8gQSB2YWxpZCB0
cmVlIGNhbiBvbmx5IGhhdmUgdHJlZWl0ZW0gb3IgZ3JvdXAgb2YgdHJlZWl0ZW1zIGFzIGNoaWxk
CisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjdHJlZQorICAgIGZv
ciAoY29uc3QgYXV0byYgY2hpbGQgOiBjaGlsZHJlbigpKSB7CisgICAgICAgIGlmICghY2hpbGQt
PmlzVHJlZUl0ZW0oKSAmJiAhY2hpbGQtPmlzR3JvdXAoKSkgeworICAgICAgICAgICAgbV9pc01h
bGZvcm1lZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoY2hpbGQtPmlzR3JvdXAoKSkgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBncm91
cENoaWxkIDogY2hpbGQtPmNoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWdyb3Vw
Q2hpbGQtPmlzVHJlZUl0ZW0oKSkgeworICAgICAgICAgICAgICAgICAgICBtX2lzTWFsZm9ybWVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gQWZ0ZXIgdmFsaWRhdGlu
ZyB0aGUgdHJlZSwgd2Ugd2FudCB0aGUgY2hpbGRyZW4gdG8gcmVmbGVjdCB0aGUgY29ycmVjdCBy
b2xlCisgICAgbV9yb2xlID0gbV9pc01hbGZvcm1lZCA/IEdyb3VwUm9sZSA6IFRyZWVSb2xlOwor
ICAgIHVwZGF0ZUNoaWxkcmVuUm9sZSgpOworICAgIAorICAgIHJldHVybiBtX3JvbGU7Cit9CisK
K3ZvaWQgQWNjZXNzaWJpbGl0eVRyZWU6Omlnbm9yZUludmFsaWRUcmVlSXRlbSgpCit7CisgICAg
Ly8gVXNlIGEgcXVldWUgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSB0cmVlIG5vZGVzLCBhbmQgaWdu
b3JlIGFsbCB0aGUgdHJlZWl0ZW0KKyAgICAvLyBhdHRyaWJ1dGUgcm9sZXMKKyAgICBzdGQ6OnF1
ZXVlPEFjY2Vzc2liaWxpdHlPYmplY3QqPiBxdWV1ZTsKKyAgICAKKyAgICBxdWV1ZS5wdXNoKHRo
aXMpOworICAgIHdoaWxlICghcXVldWUuZW1wdHkoKSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0ICpheE9iaiA9IHF1ZXVlLmZyb250KCk7CisgICAgICAgIHF1ZXVlLnBvcCgpOworCisg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgY2hpbGQgOiBheE9iai0+Y2hpbGRyZW4oKSkKKyAgICAg
ICAgICAgIHF1ZXVlLnB1c2goJipjaGlsZCk7CisKKyAgICAgICAgaWYgKGlzPEFjY2Vzc2liaWxp
dHlUcmVlSXRlbT4oKmF4T2JqKSkgeworICAgICAgICAgICAgZG93bmNhc3Q8QWNjZXNzaWJpbGl0
eVRyZWVJdGVtPigqYXhPYmopLm1hcmtUcmVlSXRlbUludmFsaWQoKTsKKyAgICAgICAgICAgIGF4
T2JqLT51cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIEFjY2Vzc2liaWxpdHlUcmVlOjp1cGRhdGVDaGlsZHJlblJvbGUoKQoreworICAgIC8vIEJl
Zm9yZSB2YWxpZGF0aW5nIHRoZSB0cmVlLCB3ZSBhZGRlZCBhbGwgdGhlIGNoaWxkIG5vZGVzIGFz
IHRoZSBjaGlsZHJlbiB0byB0aGUgdHJlZS4gQnV0IGV2ZW50dWFsbHkgd2UKKyAgICAvLyB3YW50
IHRvIGV4cG9zZSB0aGUgY2hpbGRyZW4gYmFzZWQgb24gdGhlIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzQWxsb3dlZENoaWxkT2ZUcmVlKCkgZnVuY3Rpb24uCisgICAgaWYgKCFtX2lzTWFs
Zm9ybWVkICYmICFtX2hhc1ZhbGlkYXRlZFRyZWUpIHsKKyAgICAgICAgbV9oYXNWYWxpZGF0ZWRU
cmVlID0gdHJ1ZTsKKyAgICAgICAgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgdXBk
YXRlQ2hpbGRyZW5JZk5lY2Vzc2FyeSgpOworICAgIH0KKyAgICAvLyB3ZSBuZWVkIHRvIGlnbm9y
ZSB0aGUgdHJlZWl0ZW0gcm9sZXMgaWYgdGhlIHRyZWUgaXMgbWFsZm9ybWVkLgorICAgIGlmICht
X2lzTWFsZm9ybWVkKQorICAgICAgICBpZ25vcmVJbnZhbGlkVHJlZUl0ZW0oKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5VHJlZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VHJlZV9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlUcmVl
X2gKKworI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIEFjY2Vzc2liaWxpdHlUcmVlIGZpbmFsIDogcHVi
bGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFJlZjxBY2Nlc3NpYmlsaXR5VHJlZT4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgICAg
ICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VHJlZSgpOworCisgICAgICAgIGJvb2wgaGFzVmFsaWRh
dGVkVHJlZSgpIHsgcmV0dXJuIG1faGFzVmFsaWRhdGVkVHJlZTsgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRyZWUoUmVuZGVyT2JqZWN0Kik7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vz
c2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc01hbGZvcm1l
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNNYWxmb3JtZWQ7IH0KKyAgICAgICAgdm9p
ZCB1cGRhdGVDaGlsZHJlblJvbGUoKTsKKyAgICAgICAgdm9pZCBpZ25vcmVJbnZhbGlkVHJlZUl0
ZW0oKTsKKworICAgICAgICBib29sIG1faXNNYWxmb3JtZWQgPSBmYWxzZTsgCisgICAgICAgIGJv
b2wgbV9oYXNWYWxpZGF0ZWRUcmVlID0gZmFsc2U7CisgICAgfTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vz
c2liaWxpdHlUcmVlLCBpc1RyZWUoKSkKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlUcmVlX2gK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUcmVlSXRlbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiCisj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworICAgIAor
QWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKKzogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKK3sKK30K
KyAgICAKK0FjY2Vzc2liaWxpdHlUcmVlSXRlbTo6fkFjY2Vzc2liaWxpdHlUcmVlSXRlbSgpCit7
Cit9CisgICAgCitSZWY8QWNjZXNzaWJpbGl0eVRyZWVJdGVtPiBBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW06OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc2liaWxpdHlUcmVlSXRlbShyZW5kZXJlcikpOworfQorCitBY2Nlc3NpYmls
aXR5Um9sZSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKK3sKKyAgICAvLyBJZiB0aGUgb2JqZWN0IGhhcyBub3QgYmVlbiBtYXJrZWQgYXMgaW52YWxp
ZCwgd2UgbmVlZCB0byBkbyBhIGNoZWNrIHRvIHNlZSBpZiBpdCdzCisgICAgLy8gYSBkZXNjZW5k
YW50IG9mIGEgdHJlZS4gSWYgbm90LCB3ZSB3YW50IHRvIGlnbm9yZSB0aGUgYXR0cmlidXRlIHJv
bGUuCisgICAgaWYgKG1faXNUcmVlSXRlbVZhbGlkKSB7CisgICAgICAgIGJvb2wgdHJlZVZhbGlk
ID0gZmFsc2U7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqID0gcGFyZW50T2Jq
ZWN0KCk7CisgICAgICAgIHdoaWxlIChheE9iaikgeworICAgICAgICAgICAgaWYgKGF4T2JqLT5p
c1RyZWUoKSkgeworICAgICAgICAgICAgICAgIHRyZWVWYWxpZCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBheE9iaiA9IGF4T2JqLT5w
YXJlbnRPYmplY3QoKTsKKyAgICAgICAgfQorICAgICAgICBtX2lzVHJlZUl0ZW1WYWxpZCA9IHRy
ZWVWYWxpZDsKKyAgICB9CisKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VHJl
ZUl0ZW06Om1hcmtUcmVlSXRlbUludmFsaWQoKQoreworICAgIG1faXNUcmVlSXRlbVZhbGlkID0g
ZmFsc2U7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
cmVlSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VHJl
ZUl0ZW1faAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW1faAorCisjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisg
ICAgY2xhc3MgQWNjZXNzaWJpbGl0eVRyZWVJdGVtIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFJlZjxBY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICAgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eVRyZWVJdGVtKCk7CisKKyAgICAgICAgdm9pZCBtYXJrVHJlZUl0ZW1JbnZh
bGlkKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faXNUcmVlSXRlbVZhbGlkOyB9CisgICAgICAgIAor
ICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUcmVlSXRlbShSZW5k
ZXJPYmplY3QqKTsKKyAgICAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVB
Y2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOworICAgICAgICBib29sIG1faXNUcmVlSXRlbVZh
bGlkID0gdHJ1ZTsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVD
SUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0eVRyZWVJdGVtLCBp
c1RyZWVJdGVtKCkpCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW1faApJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDE4NzI3OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVD
b2x1bW4uaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eVRyZWUuaCIKICNpbXBvcnQgIkNocm9tZS5oIgogI2ltcG9ydCAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgpAQCAtMjA1Myw2ICsyMDU0LDkgQEAgLSAoTlNT
dHJpbmcqKXN1YnJvbGUKICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkKICAg
ICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb3dTdWJyb2xlOworCisgICAgaWYg
KGlzPEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KCptX29iamVjdCkgJiYgZG93bmNhc3Q8QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKm1fb2JqZWN0KS5pc01hbGZvcm1lZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIEAiQVhNYWxmb3JtZWQiOwogICAgIAogICAgIGlmIChtX29iamVjdC0+aXNG
aWVsZHNldCgpKQogICAgICAgICByZXR1cm4gQCJBWEZpZWxkc2V0IjsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE4NzQ1MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE3IEBACisyMDE1LTA3LTI3ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8gYWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9y
bWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE0ODYyODkyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlh
LW1hcHBpbmdzLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1l
eHBvc2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNo
aWxkLWV4cG9zZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9t
YWxmb3JtZWQtdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA3LTI3
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFRlc3QgcmVz
dWx0IGdhcmRlbmluZyBmb3IgRWwgQ2FwaXRhbi4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCShyZXZpc2lvbiAxODcyNzgpCisrKyBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbWFwcGluZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTIsOCArMTIsOCBAQAogPGRpdiBpZD0iZG9jdW1lbnQiIHJvbGU9ImRvY3VtZW50Ij5kb2N1bWVu
dCByb2xlPC9kaXY+CiA8ZGl2IGlkPSJzdGF0dXMiIHJvbGU9InN0YXR1cyI+c3RhdHVzIHJvbGU8
L2Rpdj4KIDxkaXYgaWQ9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPnRvb2x0aXAgcm9sZTwvZGl2
PgotPGRpdiBpZD0idHJlZSIgcm9sZT0idHJlZSI+dHJlZSByb2xlPC9kaXY+Ci08ZGl2IGlkPSJ0
cmVlaXRlbSIgcm9sZT0idHJlZWl0ZW0iPnRyZWVpdGVtIHJvbGU8L2Rpdj4KKzxkaXYgaWQ9InRy
ZWUiIHJvbGU9InRyZWUiPjxkaXYgcm9sZT0idHJlZWl0ZW0iPnRyZWUgcm9sZTwvZGl2PjwvZGl2
PgorPGRpdiByb2xlPSJ0cmVlIj48ZGl2IGlkPSJ0cmVlaXRlbSIgcm9sZT0idHJlZWl0ZW0iPnRy
ZWVpdGVtIHJvbGU8L2Rpdj48L2Rpdj4KIDxicj4KIDxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgog
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0t
Y2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBA
IFRoaXMgdGVzdHMgaWYgYSB0cmVlaXRlbSBjb250YWlucyBhbiBlbGUKIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KIAogCi1QQVNTIHRyZWUuY2hpbGRyZW5Db3VudCBpcyAyCitQQVNTIHRyZWUu
Y2hpbGRyZW5Db3VudCBpcyAzCiBQQVNTIGlucHV0RmllbGQuaXNWYWxpZCBpcyB0cnVlCiBQQVNT
IGlucHV0RmllbGQzLmlzVmFsaWQgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBv
c2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRl
bS1jaGlsZC1leHBvc2VkLmh0bWwJKHJldmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw5ICsyNiw5IEBACiAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaWYgYSB0cmVlaXRl
bSBjb250YWlucyBhbiBlbGVtZW50IG90aGVyIHRoYW4gc3RhdGljIHRleHQsIGl0IHNob3VsZCBi
ZSBleHBvc2VkIik7CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
Ci0gICAgCS8vIHRyZWUgc2hvdWxkIG9ubHkgaGF2ZSAyIGNoaWxkLCBzaW5jZSBvbmx5IHRyZWVp
dGVtIG9yIHN0YXRpYyB0ZXh0IGNhbiBiZSBhIHRyZWUncyBjaGlsZAorICAgIAkvLyB0cmVlIHNo
b3VsZCBvbmx5IGhhdmUgMyBjaGlsZCwgc2luY2UgbWFsZm9ybWVkIHRyZWUgc2hvdWxkIGFsc28g
YmUgYWNjZXNzaWJsZS4KICAgICAgICAgdmFyIHRyZWUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRyZWUiKTsKLSAgICAgICAgc2hvdWxkQmUoInRyZWUu
Y2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgIHNob3VsZEJlKCJ0cmVlLmNoaWxkcmVuQ291
bnQiLCAiMyIpOwogICAgICAgICAKICAgICAgICAgLy8gaW5wdXQgZmlsZWQgaW4gdHJlZWl0ZW0x
IHNob3VsZCBiZSBleHBvc2VkCiAgICAgICAgIHZhciBpbnB1dEZpZWxkID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJpbnB1dDEiKTsKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS9tYWxmb3JtZWQtdHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorRW50cnkgQQorCisKK3RleHQKKwordGV4
dAorVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIHRyZWUgaXMgYWNjZXNzaWJsZS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdHJlZTEuc3Vicm9sZSBpcyAiQVhTdWJy
b2xlOiBBWE1hbGZvcm1lZCIKK1BBU1MgdHJlZTIuc3Vicm9sZSBpcyAiQVhTdWJyb2xlOiBBWE1h
bGZvcm1lZCIKK1BBU1MgaXRlbUEgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1CICE9IG51bGwg
aXMgdHJ1ZQorUEFTUyBpdGVtQyAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUQgIT0gbnVsbCBp
cyB0cnVlCitQQVNTIGl0ZW1FICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRiAhPSBudWxsIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQt
dHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PiAg
IAorICAgICAgICAKKzx1bCBpZD0ibWFsZm9ybWVkVHJlZTEiIHJvbGU9InRyZWUiPgorPGxpIHJv
bGU9InRyZWVpdGVtIj4KKzxzcGFuPjxhIGlkPSJJVEVNX0EiIGhyZWY9Imh0dHA6Ly9hcHBsZS5j
b20iPkVudHJ5IEE8L2E+PC9zcGFuPgorPC9saT4KKzxsaSBpZD0ibGlzdDEiPjxpbnB1dCBpZD0i
SVRFTV9CIj48L2xpPgorPC91bD4KKworPHVsIGlkPSJtYWxmb3JtZWRUcmVlMiIgcm9sZT0idHJl
ZSI+Cis8bGk+PGlucHV0IGlkPSJJVEVNX0MiPjwvbGk+Cis8bGkgaWQ9IklURU1fRCI+dGV4dDwv
bGk+Cis8L3VsPgorCis8dWwgaWQ9Im1hbGZvcm1lZFRyZWUzIj4KKzxsaSByb2xlPSJ0cmVlaXRl
bSI+PGlucHV0IGlkPSJJVEVNX0UiPjwvbGk+Cis8bGkgcm9sZT0idHJlZWl0ZW0iIGlkPSJJVEVN
X0YiPnRleHQ8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhhdCBhIG1hbGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuIikKKworaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgLy8gVHJ5IHRvIGZvY3VzIG9uIHRoZSBlbGVt
ZW50LgorICAgIHZhciB0cmVlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgibWFsZm9ybWVkVHJlZTEiKTsKKyAgICBzaG91bGRCZSgidHJlZTEuc3Vicm9s
ZSIsICJcIkFYU3Vicm9sZTogQVhNYWxmb3JtZWRcIiIpOworICAgIHZhciB0cmVlMiA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgibWFsZm9ybWVkVHJlZTIi
KTsKKyAgICBzaG91bGRCZSgidHJlZTIuc3Vicm9sZSIsICJcIkFYU3Vicm9sZTogQVhNYWxmb3Jt
ZWRcIiIpOworCisgICAgdmFyIGl0ZW1BID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJJVEVNX0EiKTsKKyAgICB2YXIgaXRlbUIgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQiIpOworICAgIHZhciBpdGVt
QyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9D
Iik7CisgICAgdmFyIGl0ZW1EID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJJVEVNX0QiKTsKKyAgICB2YXIgaXRlbUUgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRSIpOworICAgIHZhciBpdGVtRiA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9GIik7Cisg
ICAgCisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVl
KCJpdGVtQiAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQyAhPSBudWxsIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJpdGVtRCAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVt
RSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRiAhPSBudWxsIik7Cit9CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257605</attachid>
            <date>2015-07-27 15:48:14 -0700</date>
            <delta_ts>2015-07-27 17:17:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35419</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw2ICsxMDYzLDggQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAor
ICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCisgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwCiAKICAgICBiaW5kaW5ncy9nZW5lcmljL0FjdGl2
ZURPTUNhbGxiYWNrLmNwcAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE5NCw2ICs3MTk0LDM0
IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJp
bGl0eVxBY2Nlc3NpYmlsaXR5VHJlZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwIj4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcd2luXEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcd2luXEFjY2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVx3aW5cQVhPYmplY3RDYWNo
ZVdpbi5jcHAiIC8+CkBAIC0xOTg0OCw2ICsxOTg3Niw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2li
aWxpdHlcQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmls
aXR5XHdpblxBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oIiAvPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycwkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDEy
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxp
dHlUYWJsZVJvdy5jcHAiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5
XEFjY2Vzc2liaWxpdHlUcmVlLmNwcCI+CisgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vz
c2liaWxpdHlcQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCI+CisgICAgICA8RmlsdGVyPmFjY2Vz
c2liaWxpdHk8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQVhPYmplY3RDYWNoZS5jcHAiPgogICAgICAgPEZpbHRlcj5h
Y2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjY0LDYgKzc2NzAs
MTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmgiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5
XEFjY2Vzc2liaWxpdHlUcmVlLmgiPgorICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3Np
YmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJp
bGl0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmgiPgogICAgICAgPEZpbHRlcj5hY2Nlc3Np
YmlsaXR5PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODcyNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTQzOTcsNiArNDM5NywxMCBAQAogCQlBOEVBODAwRTBBMTk1MTZFMDBB
OEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThGQTZFNUQwRTRD
RkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThGQTZFNUUw
RTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4u
Y3BwICovOyB9OworCQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRy
ZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTkx
QzlGQkMxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCAqLzsgfTsKKwkJ
QTkxQzlGQkYxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZCRDFCNjU4NkRFMDBB
RkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCAqLzsgfTsKKwkJQTkxQzlGQzIxQjY1OUE2NzAw
QUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCAqLzsgfTsKKwkJQTkxQzlGQzMxQjY1OUE2NzAwQUZGRDU0
IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxp
dHlUcmVlSXRlbS5oICovOyB9OwogCQlBOUM2RTRFMzBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWlt
ZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTlDNkU0RTEwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCAqLzsgfTsKIAkJQTlD
NkU0RTQwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOUM2RTRFMjBENzQ1RTA1MDA2NDQyRTkgLyog
RE9NTWltZVR5cGUuaCAqLzsgfTsKIAkJQTlDNkU0RTcwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1p
bWVUeXBlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTlDNkU0RTUwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuY3BwICov
OyB9OwpAQCAtMTE3OTIsNiArMTE3OTYsMTAgQEAKIAkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVG
IC8qIE1lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1
Q0Y0OSAvKiBQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdHRl
cm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUMwRTRDRkRFRDAwRDVD
RjQ5IC8qIFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE5MUM5RkJDMUI2NTg2
REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE5MUM5RkJEMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJl
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQg
LyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE5MUM5RkMxMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRyZWVJ
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QzZFNEUxMEQ3NDVFMDUwMDY0
NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NTWltZVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2
RTRFMjBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTU1pbWVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE5QzZFNEU1MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01NaW1lVHlwZUFycmF5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzgwLDYgKzE1Nzg4LDEwIEBACiAJCQkJ
MjlBODEyMUQwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCAq
LywKIAkJCQkyOTgxQ0FBMTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3QuY3Bw
ICovLAogCQkJCTI5QTgxMjBFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5o
ICovLAorCQkJCUE5MUM5RkJDMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5j
cHAgKi8sCisJCQkJQTkxQzlGQkQxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVl
LmggKi8sCisJCQkJQTkxQzlGQzAxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVl
SXRlbS5jcHAgKi8sCisJCQkJQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxp
dHlUcmVlSXRlbS5oICovLAogCQkJCTI5ODFDQUEyMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAgKi8sCiAJCQkJMjlBODEyMjUwRkJCOUMxRDAwNTEwMjkzIC8qIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94LmggKi8sCiAJCQkJMjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAqLywKQEAgLTI2ODUzLDYgKzI2ODY1LDcg
QEAKIAkJCQlCMjIyNzlDODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBOTFDOUZCRjFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3OUQxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE5MjEzMjc1MTFDMEU2QkIwMDQ1NjIzOCAvKiBT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDQw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzM1NSw2ICsyNzM2OCw3IEBACiAJCQkJQjEwQjY5ODAxNDBDMTc0MDAwQkMx
QzI2IC8qIFdlYlZUVFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMTBCNjk4MjE0MEMxNzQw
MDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgyMDMx
MDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBOTFDOUZDMzFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdo
ZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUM0NEEyMTg4RjRCQjgwMDY2MURGMSAv
KiBXaGVlbEV2ZW50RGVsdGFUcmFja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4OTQ2LDYgKzI4
OTYwLDcgQEAKIAkJCQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUYzRDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9y
SGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4Mzc4NDA5Rjg1RDFDMDBCODVBRTQg
LyogSlNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZE
NTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRkFGNEUw
QzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM2MEQ5QkYwRDJBMjY5QTAwQjk5MThGIC8qIEpTRXZlbnRFeGNlcHRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNCNzBENjkwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDYyLDYgKzMwMDc3LDcgQEAKIAkJCQkwRkU3MTQwNTE0
MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVEOTI1QjY3MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxCZWhhdmlvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUE4NEYwNDE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE5MUM5RkMyMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nl
c3NpYmlsaXR5VHJlZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MDVBRUMxNUY5NDg0
ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRjYyRUU3MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM0RTQwRTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29v
cmRpbmF0b3JJT1MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNiArNTUsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVl
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
QEAgLTI5MSw2ICsyOTMsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVh
dGVGcgogICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAiZ3JpZGNlbGwiKSB8fCBub2RlSGFzUm9s
ZShub2RlLCAiY2VsbCIpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjb2x1bW5oZWFkZXIiKSB8fCBu
b2RlSGFzUm9sZShub2RlLCAicm93aGVhZGVyIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogCisgICAgLy8gYXJpYSB0cmVlCisg
ICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUsICJ0cmVlIikpCisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VHJlZTo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwg
InRyZWVpdGVtIikpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmNyZWF0
ZShyZW5kZXJlcik7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgLy8gbWVkaWEgY29udHJvbHMK
ICAgICBpZiAobm9kZSAmJiBub2RlLT5pc01lZGlhQ29udHJvbEVsZW1lbnQoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTVkdSb290LmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
VGFibGUuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZS5oIgogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCkBAIC0xMTE1LDcgKzExMTYsOSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzQWxsb3dlCiAgICAgd2hpbGUgKGF4T2JqKSB7CiAgICAgICAgIGlmIChheE9iai0+cm9sZVZh
bHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKQogICAgICAgICAgICAgaXNUcmVlSXRlbURlc2NlbmRhbnQg
PSB0cnVlOwotICAgICAgICBpZiAoYXhPYmotPmlzVHJlZSgpKSB7CisgICAgICAgIC8vIElmIHRo
ZSB0cmVlIGhhcyBub3QgYmVlbiB2YWxpZGF0ZWQgeWV0LCB3ZSB3YW50IHRvIGFkZCBhbGwgdGhl
IGNoaWxkcmVuIGluIGNhc2UgaXQncworICAgICAgICAvLyBhIG1hbGZvcm1lZCB0cmVlLgorICAg
ICAgICBpZiAoYXhPYmotPmlzVHJlZSgpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUcmVlPigq
YXhPYmopLmhhc1ZhbGlkYXRlZFRyZWUoKSkgewogICAgICAgICAgICAgaXNJblRyZWUgPSB0cnVl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0OTcsNyArMjUwMCwxMiBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgaWYgKCFtX3JlbmRl
cmVyKQogICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUg
PSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBtX2Fy
aWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKKworICAgIC8vIFNvbWV0aW1l
cyB3ZSBuZWVkIHRvIGlnbm9yZSB0aGUgYXR0cmlidXRlIHJvbGUuIExpa2UgaWYgYSB0cmVlIGlz
IG1hbGZvcm1lZCwKKyAgICAvLyB3ZSB3YW50IHRvIGlnbm9yZSB0aGUgdHJlZSBhdHRyaWJ1dGUg
cm9sZS4KKyAgICBib29sIHNob3VsZElnbm9yZUFyaWFSb2xlID0gc2hvdWxkSWdub3JlQXR0cmli
dXRlUm9sZSgpOworICAgIGlmIChtX2FyaWFSb2xlICE9IFVua25vd25Sb2xlICYmICFzaG91bGRJ
Z25vcmVBcmlhUm9sZSkKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAgICAgCiAgICAgTm9k
ZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCShyZXZp
c2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSwxMCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKIAorICAgIC8vIEZ1bmN0aW9uIHRvIGRldGVybWluZSBpZiB0aGUgYXR0cmlidXRlIHJv
bGUgc2hvdWxkIGJlIGlnbm9yZWQKKyAgICB2aXJ0dWFsIGJvb2wgaXNNYWxmb3JtZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVSb2xlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIGV4cGxp
Y2l0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBz
ZXRSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVu
ZGVyZXI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRyZWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlLmgiCisKKyNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgi
CisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisKKyNpbmNsdWRlIDxxdWV1ZT4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAKK0FjY2Vz
c2liaWxpdHlUcmVlOjpBY2Nlc3NpYmlsaXR5VHJlZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
ICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKK3sKK30KKyAgICAKK0Fj
Y2Vzc2liaWxpdHlUcmVlOjp+QWNjZXNzaWJpbGl0eVRyZWUoKQoreworfQorICAgIAorUmVmPEFj
Y2Vzc2liaWxpdHlUcmVlPiBBY2Nlc3NpYmlsaXR5VHJlZTo6Y3JlYXRlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRyZWUo
cmVuZGVyZXIpKTsKK30KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWNjZXNzaWJpbGl0eUlz
SWdub3JlZEJ5RGVmYXVsdCgpOworfQorCitBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5
VHJlZTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQoreworICAgIG1fYXJpYVJvbGUgPSBk
ZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpOworCisgICAgLy8gVGVtcG9yYXJpbHkgc2V0IHJv
bGUgc28gdGhhdCB3ZSBjYW4gcXVlcnkgY2hpbGRyZW4gKG90aGVyd2lzZSBjYW5IYXZlQ2hpbGRy
ZW4gcmV0dXJucyBmYWxzZSkuCisgICAgbV9yb2xlID0gVHJlZVJvbGU7CisKKyAgICAvLyBBIHZh
bGlkIHRyZWUgY2FuIG9ubHkgaGF2ZSB0cmVlaXRlbSBvciBncm91cCBvZiB0cmVlaXRlbXMgYXMg
Y2hpbGQKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi93YWktYXJpYS9yb2xlcyN0cmVlCisg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKCkpIHsKKyAgICAgICAgaWYgKCFj
aGlsZC0+aXNUcmVlSXRlbSgpICYmICFjaGlsZC0+aXNHcm91cCgpKSB7CisgICAgICAgICAgICBt
X2lzTWFsZm9ybWVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGlmIChjaGlsZC0+aXNHcm91cCgpKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGdyb3VwQ2hpbGQgOiBjaGlsZC0+Y2hpbGRyZW4oKSkgeworICAgICAgICAgICAgICAgIGlmICgh
Z3JvdXBDaGlsZC0+aXNUcmVlSXRlbSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG1faXNNYWxm
b3JtZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBZnRlciB2YWxp
ZGF0aW5nIHRoZSB0cmVlLCB3ZSB3YW50IHRoZSBjaGlsZHJlbiB0byByZWZsZWN0IHRoZSBjb3Jy
ZWN0IHJvbGUKKyAgICBtX3JvbGUgPSBtX2lzTWFsZm9ybWVkID8gR3JvdXBSb2xlIDogVHJlZVJv
bGU7CisgICAgdXBkYXRlQ2hpbGRyZW5Sb2xlKCk7CisgICAgCisgICAgcmV0dXJuIG1fcm9sZTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VHJlZTo6aWdub3JlSW52YWxpZFRyZWVJdGVtKCkKK3sK
KyAgICAvLyBVc2UgYSBxdWV1ZSB0byBpdGVyYXRlIHRocm91Z2ggdGhlIHRyZWUgbm9kZXMsIGFu
ZCBpZ25vcmUgYWxsIHRoZSB0cmVlaXRlbQorICAgIC8vIGF0dHJpYnV0ZSByb2xlcworICAgIHN0
ZDo6cXVldWU8QWNjZXNzaWJpbGl0eU9iamVjdCo+IHF1ZXVlOworICAgIAorICAgIHF1ZXVlLnB1
c2godGhpcyk7CisgICAgd2hpbGUgKCFxdWV1ZS5lbXB0eSgpKSB7CisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGF4T2JqID0gcXVldWUuZnJvbnQoKTsKKyAgICAgICAgcXVldWUucG9wKCk7
CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGF4T2JqLT5jaGlsZHJlbigpKQor
ICAgICAgICAgICAgcXVldWUucHVzaCgmKmNoaWxkKTsKKworICAgICAgICBpZiAoaXM8QWNjZXNz
aWJpbGl0eVRyZWVJdGVtPigqYXhPYmopKSB7CisgICAgICAgICAgICBkb3duY2FzdDxBY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0+KCpheE9iaikubWFya1RyZWVJdGVtSW52YWxpZCgpOworICAgICAgICAg
ICAgYXhPYmotPnVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVRyZWU6OnVwZGF0ZUNoaWxkcmVuUm9sZSgpCit7CisgICAg
Ly8gQmVmb3JlIHZhbGlkYXRpbmcgdGhlIHRyZWUsIHdlIGFkZGVkIGFsbCB0aGUgY2hpbGQgbm9k
ZXMgYXMgdGhlIGNoaWxkcmVuIHRvIHRoZSB0cmVlLiBCdXQgZXZlbnR1YWxseSB3ZQorICAgIC8v
IHdhbnQgdG8gZXhwb3NlIHRoZSBjaGlsZHJlbiBiYXNlZCBvbiB0aGUgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBmdW5jdGlvbi4KKyAgICBpZiAoIW1f
aXNNYWxmb3JtZWQgJiYgIW1faGFzVmFsaWRhdGVkVHJlZSkgeworICAgICAgICBtX2hhc1ZhbGlk
YXRlZFRyZWUgPSB0cnVlOworICAgICAgICBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOworICAgICAg
ICB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCk7CisgICAgfQorICAgIC8vIHdlIG5lZWQgdG8g
aWdub3JlIHRoZSB0cmVlaXRlbSByb2xlcyBpZiB0aGUgdHJlZSBpcyBtYWxmb3JtZWQuCisgICAg
aWYgKG1faXNNYWxmb3JtZWQpCisgICAgICAgIGlnbm9yZUludmFsaWRUcmVlSXRlbSgpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlUcmVlX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0
eVRyZWVfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5VHJlZSBmaW5hbCA6IHB1
YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PEFjY2Vzc2liaWxpdHlUcmVlPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eVRyZWUoKTsKKworICAgIGJvb2wgaGFzVmFsaWRhdGVkVHJlZSgpIHsgcmV0
dXJuIG1faGFzVmFsaWRhdGVkVHJlZTsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFjY2Vz
c2liaWxpdHlUcmVlKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNNYWxmb3JtZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzTWFs
Zm9ybWVkOyB9CisgICAgdm9pZCB1cGRhdGVDaGlsZHJlblJvbGUoKTsKKyAgICB2b2lkIGlnbm9y
ZUludmFsaWRUcmVlSXRlbSgpOworCisgICAgYm9vbCBtX2lzTWFsZm9ybWVkID0gZmFsc2U7Cisg
ICAgYm9vbCBtX2hhc1ZhbGlkYXRlZFRyZWUgPSBmYWxzZTsKK307CisgICAgCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQUNDRVNTSUJJTElUWShBY2Nl
c3NpYmlsaXR5VHJlZSwgaXNUcmVlKCkpCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VHJlZV9o
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRl
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIgor
CisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworICAg
IAorQWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIp
Cit7Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06On5BY2Nlc3NpYmlsaXR5VHJlZUl0
ZW0oKQoreworfQorICAgIAorUmVmPEFjY2Vzc2liaWxpdHlUcmVlSXRlbT4gQWNjZXNzaWJpbGl0
eVRyZWVJdGVtOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0ocmVuZGVyZXIpKTsKK30KKworQWNj
ZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpkZXRlcm1pbmVBY2Nlc3NpYmls
aXR5Um9sZSgpCit7CisgICAgLy8gSWYgdGhlIG9iamVjdCBoYXMgbm90IGJlZW4gbWFya2VkIGFz
IGludmFsaWQsIHdlIG5lZWQgdG8gZG8gYSBjaGVjayB0byBzZWUgaWYgaXQncworICAgIC8vIGEg
ZGVzY2VuZGFudCBvZiBhIHRyZWUuIElmIG5vdCwgd2Ugd2FudCB0byBpZ25vcmUgdGhlIGF0dHJp
YnV0ZSByb2xlLgorICAgIGlmIChtX2lzVHJlZUl0ZW1WYWxpZCkgeworICAgICAgICBib29sIHRy
ZWVWYWxpZCA9IGZhbHNlOworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iaiA9IHBh
cmVudE9iamVjdCgpOworICAgICAgICB3aGlsZSAoYXhPYmopIHsKKyAgICAgICAgICAgIGlmIChh
eE9iai0+aXNUcmVlKCkpIHsKKyAgICAgICAgICAgICAgICB0cmVlVmFsaWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXhPYmogPSBh
eE9iai0+cGFyZW50T2JqZWN0KCk7CisgICAgICAgIH0KKyAgICAgICAgbV9pc1RyZWVJdGVtVmFs
aWQgPSB0cmVlVmFsaWQ7CisgICAgfQorCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJp
bGl0eVRyZWVJdGVtOjptYXJrVHJlZUl0ZW1JbnZhbGlkKCkKK3sKKyAgICBtX2lzVHJlZUl0ZW1W
YWxpZCA9IGZhbHNlOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRl
bS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQWNjZXNzaWJp
bGl0eVRyZWVJdGVtX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eVRyZWVJdGVtX2gKKworI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorY2xhc3MgQWNjZXNzaWJpbGl0eVRyZWVJdGVtIGZpbmFsIDogcHVibGljIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0
eVRyZWVJdGVtPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCB+QWNjZXNzaWJp
bGl0eVRyZWVJdGVtKCk7CisKKyAgICB2b2lkIG1hcmtUcmVlSXRlbUludmFsaWQoKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICFtX2lzVHJlZUl0ZW1WYWxpZDsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFj
Y2Vzc2liaWxpdHlUcmVlSXRlbShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBtX2lzVHJlZUl0ZW1WYWxpZCA9IHRydWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0
eVRyZWVJdGVtLCBpc1RyZWVJdGVtKCkpCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW1faApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlz
aW9uIDE4NzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3
IEBACiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4uaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgor
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRyZWUuaCIKICNpbXBvcnQgIkNocm9tZS5oIgogI2ltcG9y
dCAiQ2hyb21lQ2xpZW50LmgiCiAjaW1wb3J0ICJDb2xvck1hYy5oIgpAQCAtMjA1Myw2ICsyMDU0
LDkgQEAgLSAoTlNTdHJpbmcqKXN1YnJvbGUKICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzVHJl
ZUl0ZW0oKSkKICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb3dTdWJyb2xl
OworCisgICAgaWYgKGlzPEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q+KCptX29iamVjdCkgJiYg
ZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4oKm1fb2JqZWN0KS5pc01hbGZvcm1l
ZCgpKQorICAgICAgICByZXR1cm4gQCJBWE1hbGZvcm1lZCI7CiAgICAgCiAgICAgaWYgKG1fb2Jq
ZWN0LT5pc0ZpZWxkc2V0KCkpCiAgICAgICAgIHJldHVybiBAIkFYRmllbGRzZXQiOwpJbmRleDog
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwJKHJldmlzaW9u
IDE4NzI3OCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8ZGl2IGlkPSJkb2N1bWVudCIgcm9s
ZT0iZG9jdW1lbnQiPmRvY3VtZW50IHJvbGU8L2Rpdj4KIDxkaXYgaWQ9InN0YXR1cyIgcm9sZT0i
c3RhdHVzIj5zdGF0dXMgcm9sZTwvZGl2PgogPGRpdiBpZD0idG9vbHRpcCIgcm9sZT0idG9vbHRp
cCI+dG9vbHRpcCByb2xlPC9kaXY+Ci08ZGl2IGlkPSJ0cmVlIiByb2xlPSJ0cmVlIj50cmVlIHJv
bGU8L2Rpdj4KLTxkaXYgaWQ9InRyZWVpdGVtIiByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW0gcm9s
ZTwvZGl2PgorPGRpdiBpZD0idHJlZSIgcm9sZT0idHJlZSI+PGRpdiByb2xlPSJ0cmVlaXRlbSI+
dHJlZSByb2xlPC9kaXY+PC9kaXY+Cis8ZGl2IHJvbGU9InRyZWUiPjxkaXYgaWQ9InRyZWVpdGVt
IiByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW0gcm9sZTwvZGl2PjwvZGl2PgogPGJyPgogPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KSW5kZXg6IExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1l
eHBvc2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNiw3ICs2LDcgQEAgVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFu
IGVsZQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdHJlZS5jaGlsZHJlbkNv
dW50IGlzIDIKK1BBU1MgdHJlZS5jaGlsZHJlbkNvdW50IGlzIDMKIFBBU1MgaW5wdXRGaWVsZC5p
c1ZhbGlkIGlzIHRydWUKIFBBU1MgaW5wdXRGaWVsZDMuaXNWYWxpZCBpcyB0cnVlCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAkocmV2aXNpb24gMTg3Mjc4
KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFuIGVsZW1lbnQgb3RoZXIgdGhhbiBzdGF0
aWMgdGV4dCwgaXQgc2hvdWxkIGJlIGV4cG9zZWQiKTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAJLy8gdHJlZSBzaG91bGQgb25seSBoYXZlIDIgY2hp
bGQsIHNpbmNlIG9ubHkgdHJlZWl0ZW0gb3Igc3RhdGljIHRleHQgY2FuIGJlIGEgdHJlZSdzIGNo
aWxkCisgICAgCS8vIHRyZWUgc2hvdWxkIG9ubHkgaGF2ZSAzIGNoaWxkLCBzaW5jZSBtYWxmb3Jt
ZWQgdHJlZSBzaG91bGQgYWxzbyBiZSBhY2Nlc3NpYmxlLgogICAgICAgICB2YXIgdHJlZSA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidHJlZSIpOwotICAg
ICAgICBzaG91bGRCZSgidHJlZS5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAgc2hvdWxk
QmUoInRyZWUuY2hpbGRyZW5Db3VudCIsICIzIik7CiAgICAgICAgIAogICAgICAgICAvLyBpbnB1
dCBmaWxlZCBpbiB0cmVlaXRlbTEgc2hvdWxkIGJlIGV4cG9zZWQKICAgICAgICAgdmFyIGlucHV0
RmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlu
cHV0MSIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFs
Zm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1l
ZC10cmVlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACitFbnRy
eSBBCisKKwordGV4dAorCit0ZXh0CitUaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3JtZWQgdHJlZSBp
cyBhY2Nlc3NpYmxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0cmVl
MS5zdWJyb2xlIGlzICJBWFN1YnJvbGU6IEFYTWFsZm9ybWVkIgorUEFTUyB0cmVlMi5zdWJyb2xl
IGlzICJBWFN1YnJvbGU6IEFYTWFsZm9ybWVkIgorUEFTUyBpdGVtQSAhPSBudWxsIGlzIHRydWUK
K1BBU1MgaXRlbUIgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1DICE9IG51bGwgaXMgdHJ1ZQor
UEFTUyBpdGVtRCAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUUgIT0gbnVsbCBpcyB0cnVlCitQ
QVNTIGl0ZW1GICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10
cmVlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIEhUTUw+
Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+ICAgCisgICAgICAgIAorPHVsIGlkPSJtYWxmb3JtZWRUcmVlMSIg
cm9sZT0idHJlZSI+Cis8bGkgcm9sZT0idHJlZWl0ZW0iPgorPHNwYW4+PGEgaWQ9IklURU1fQSIg
aHJlZj0iaHR0cDovL2FwcGxlLmNvbSI+RW50cnkgQTwvYT48L3NwYW4+Cis8L2xpPgorPGxpIGlk
PSJsaXN0MSI+PGlucHV0IGlkPSJJVEVNX0IiPjwvbGk+Cis8L3VsPgorCis8dWwgaWQ9Im1hbGZv
cm1lZFRyZWUyIiByb2xlPSJ0cmVlIj4KKzxsaT48aW5wdXQgaWQ9IklURU1fQyI+PC9saT4KKzxs
aSBpZD0iSVRFTV9EIj50ZXh0PC9saT4KKzwvdWw+CisKKzx1bCBpZD0ibWFsZm9ybWVkVHJlZTMi
PgorPGxpIHJvbGU9InRyZWVpdGVtIj48aW5wdXQgaWQ9IklURU1fRSI+PC9saT4KKzxsaSByb2xl
PSJ0cmVlaXRlbSIgaWQ9IklURU1fRiI+dGV4dDwvbGk+Cis8L3VsPgorCis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorCitkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIHRyZWUgaXMgYWNjZXNzaWJsZS4i
KQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAgICAvLyBUcnkg
dG8gZm9jdXMgb24gdGhlIGVsZW1lbnQuCisgICAgdmFyIHRyZWUxID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtYWxmb3JtZWRUcmVlMSIpOworICAgIHNo
b3VsZEJlKCJ0cmVlMS5zdWJyb2xlIiwgIlwiQVhTdWJyb2xlOiBBWE1hbGZvcm1lZFwiIik7Cisg
ICAgdmFyIHRyZWUyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJtYWxmb3JtZWRUcmVlMiIpOworICAgIHNob3VsZEJlKCJ0cmVlMi5zdWJyb2xlIiwgIlwi
QVhTdWJyb2xlOiBBWE1hbGZvcm1lZFwiIik7CisKKyAgICB2YXIgaXRlbUEgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQSIpOworICAgIHZhciBp
dGVtQiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRF
TV9CIik7CisgICAgdmFyIGl0ZW1DID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJJVEVNX0MiKTsKKyAgICB2YXIgaXRlbUQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRCIpOworICAgIHZhciBpdGVtRSA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9FIik7
CisgICAgdmFyIGl0ZW1GID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJJVEVNX0YiKTsKKyAgICAKKyAgICBzaG91bGRCZVRydWUoIml0ZW1BICE9IG51bGwi
KTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1CICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUo
Iml0ZW1DICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1EICE9IG51bGwiKTsKKyAg
ICBzaG91bGRCZVRydWUoIml0ZW1FICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1G
ICE9IG51bGwiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257617</attachid>
            <date>2015-07-27 17:17:10 -0700</date>
            <delta_ts>2015-07-28 17:26:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35456</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw2ICsxMDYzLDggQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxl
Q29sdW1uLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29u
dGFpbmVyLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAor
ICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCisgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwCiAKICAgICBiaW5kaW5ncy9nZW5lcmljL0FjdGl2
ZURPTUNhbGxiYWNrLmNwcAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0
dXJlcy5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvagkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3hwcm9qL1dlYkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE5NCw2ICs3MTk0LDM0
IEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxk
PgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJp
bGl0eVxBY2Nlc3NpYmlsaXR5VHJlZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwIj4KKyAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcd2luXEFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcd2luXEFjY2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVx3aW5cQVhPYmplY3RDYWNo
ZVdpbi5jcHAiIC8+CkBAIC0xOTg0OCw2ICsxOTg3Niw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2li
aWxpdHlcQWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmls
aXR5XHdpblxBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oIiAvPgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmls
dGVycwkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDEy
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxp
dHlUYWJsZVJvdy5jcHAiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5
XEFjY2Vzc2liaWxpdHlUcmVlLmNwcCI+CisgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0Zp
bHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vz
c2liaWxpdHlcQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCI+CisgICAgICA8RmlsdGVyPmFjY2Vz
c2liaWxpdHk8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQVhPYmplY3RDYWNoZS5jcHAiPgogICAgICAgPEZpbHRlcj5h
Y2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjY0LDYgKzc2NzAs
MTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJp
bGl0eVRhYmxlUm93LmgiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5
XEFjY2Vzc2liaWxpdHlUcmVlLmgiPgorICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0
ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3Np
YmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJp
bGl0eTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmgiPgogICAgICAgPEZpbHRlcj5hY2Nlc3Np
YmlsaXR5PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODcyNzgp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTQzOTcsNiArNDM5NywxMCBAQAogCQlBOEVBODAwRTBBMTk1MTZFMDBB
OEVGNUYgLyogTWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThGQTZFNUQwRTRD
RkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThGQTZFNUUw
RTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4u
Y3BwICovOyB9OworCQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRy
ZWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTkx
QzlGQkMxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCAqLzsgfTsKKwkJ
QTkxQzlGQkYxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZCRDFCNjU4NkRFMDBB
RkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCAqLzsgfTsKKwkJQTkxQzlGQzIxQjY1OUE2NzAw
QUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCAqLzsgfTsKKwkJQTkxQzlGQzMxQjY1OUE2NzAwQUZGRDU0
IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxp
dHlUcmVlSXRlbS5oICovOyB9OwogCQlBOUM2RTRFMzBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWlt
ZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTlDNkU0RTEwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCAqLzsgfTsKIAkJQTlD
NkU0RTQwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOUM2RTRFMjBENzQ1RTA1MDA2NDQyRTkgLyog
RE9NTWltZVR5cGUuaCAqLzsgfTsKIAkJQTlDNkU0RTcwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1p
bWVUeXBlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTlDNkU0RTUwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuY3BwICov
OyB9OwpAQCAtMTE3OTIsNiArMTE3OTYsMTAgQEAKIAkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVG
IC8qIE1lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1
Q0Y0OSAvKiBQYXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdHRl
cm4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUMwRTRDRkRFRDAwRDVD
RjQ5IC8qIFBhdHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGF0dGVybi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE5MUM5RkJDMUI2NTg2
REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE5MUM5RkJEMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJl
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQg
LyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE5MUM5RkMxMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRyZWVJ
dGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QzZFNEUxMEQ3NDVFMDUwMDY0
NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRE9NTWltZVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2
RTRFMjBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERPTU1pbWVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE5QzZFNEU1MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01NaW1lVHlwZUFycmF5LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzgwLDYgKzE1Nzg4LDEwIEBACiAJCQkJ
MjlBODEyMUQwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCAq
LywKIAkJCQkyOTgxQ0FBMTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3QuY3Bw
ICovLAogCQkJCTI5QTgxMjBFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5o
ICovLAorCQkJCUE5MUM5RkJDMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5j
cHAgKi8sCisJCQkJQTkxQzlGQkQxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVl
LmggKi8sCisJCQkJQTkxQzlGQzAxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVl
SXRlbS5jcHAgKi8sCisJCQkJQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxp
dHlUcmVlSXRlbS5oICovLAogCQkJCTI5ODFDQUEyMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3Np
YmlsaXR5TGlzdEJveC5jcHAgKi8sCiAJCQkJMjlBODEyMjUwRkJCOUMxRDAwNTEwMjkzIC8qIEFj
Y2Vzc2liaWxpdHlMaXN0Qm94LmggKi8sCiAJCQkJMjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8q
IEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAqLywKQEAgLTI2ODUzLDYgKzI2ODY1LDcg
QEAKIAkJCQlCMjIyNzlDODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBOTFDOUZCRjFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUIyMjI3OUQxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE5MjEzMjc1MTFDMEU2QkIwMDQ1NjIzOCAvKiBT
VkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDQw
RDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNzM1NSw2ICsyNzM2OCw3IEBACiAJCQkJQjEwQjY5ODAxNDBDMTc0MDAwQkMx
QzI2IC8qIFdlYlZUVFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMTBCNjk4MjE0MEMxNzQw
MDBCQzFDMjYgLyogV2ViVlRUVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgyMDMx
MDEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBOTFDOUZDMzFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0
VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdo
ZWVsRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUM0NEEyMTg4RjRCQjgwMDY2MURGMSAv
KiBXaGVlbEV2ZW50RGVsdGFUcmFja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4OTQ2LDYgKzI4
OTYwLDcgQEAKIAkJCQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUYzRDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9y
SGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4Mzc4NDA5Rjg1RDFDMDBCODVBRTQg
LyogSlNFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZE
NTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRkFGNEUw
QzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM2MEQ5QkYwRDJBMjY5QTAwQjk5MThGIC8qIEpTRXZlbnRFeGNlcHRpb24uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNCNzBENjkwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTMwMDYyLDYgKzMwMDc3LDcgQEAKIAkJCQkwRkU3MTQwNTE0
MjE3MEI4MDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVEOTI1QjY3MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxCZWhhdmlvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUE4NEYwNDE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxl
ci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUE5MUM5RkMyMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nl
c3NpYmlsaXR5VHJlZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MDVBRUMxNUY5NDg0
ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRjYyRUU3MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRkM0RTQwRTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29v
cmRpbmF0b3JJT1MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTUsNiArNTUsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVl
LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIK
QEAgLTI5MSw2ICsyOTMsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVh
dGVGcgogICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAiZ3JpZGNlbGwiKSB8fCBub2RlSGFzUm9s
ZShub2RlLCAiY2VsbCIpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjb2x1bW5oZWFkZXIiKSB8fCBu
b2RlSGFzUm9sZShub2RlLCAicm93aGVhZGVyIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogCisgICAgLy8gYXJpYSB0cmVlCisg
ICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUsICJ0cmVlIikpCisgICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5VHJlZTo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwg
InRyZWVpdGVtIikpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmNyZWF0
ZShyZW5kZXJlcik7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgLy8gbWVkaWEgY29udHJvbHMK
ICAgICBpZiAobm9kZSAmJiBub2RlLT5pc01lZGlhQ29udHJvbEVsZW1lbnQoKSkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlTVkdSb290LmgiCiAjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
VGFibGUuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZS5oIgogI2luY2x1ZGUgIkNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0ZXJhdG9y
LmgiCkBAIC0xMTE1LDcgKzExMTYsOSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmlzQWxsb3dlCiAgICAgd2hpbGUgKGF4T2JqKSB7CiAgICAgICAgIGlmIChheE9iai0+cm9sZVZh
bHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKQogICAgICAgICAgICAgaXNUcmVlSXRlbURlc2NlbmRhbnQg
PSB0cnVlOwotICAgICAgICBpZiAoYXhPYmotPmlzVHJlZSgpKSB7CisgICAgICAgIC8vIElmIHRo
ZSB0cmVlIGhhcyBub3QgYmVlbiB2YWxpZGF0ZWQgeWV0LCB3ZSB3YW50IHRvIGFkZCBhbGwgdGhl
IGNoaWxkcmVuIGluIGNhc2UgaXQncworICAgICAgICAvLyBhIG1hbGZvcm1lZCB0cmVlLgorICAg
ICAgICBpZiAoYXhPYmotPmlzVHJlZSgpICYmIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUcmVlPigq
YXhPYmopLmhhc1ZhbGlkYXRlZFRyZWUoKSkgewogICAgICAgICAgICAgaXNJblRyZWUgPSB0cnVl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI0OTcsNyArMjUwMCwxMiBAQCBB
Y2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqCiAgICAgaWYgKCFtX3JlbmRl
cmVyKQogICAgICAgICByZXR1cm4gVW5rbm93blJvbGU7CiAKLSAgICBpZiAoKG1fYXJpYVJvbGUg
PSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBVbmtub3duUm9sZSkKKyAgICBtX2Fy
aWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKTsKKworICAgIC8vIFNvbWV0aW1l
cyB3ZSBuZWVkIHRvIGlnbm9yZSB0aGUgYXR0cmlidXRlIHJvbGUuIExpa2UgaWYgYSB0cmVlIGlz
IG1hbGZvcm1lZCwKKyAgICAvLyB3ZSB3YW50IHRvIGlnbm9yZSB0aGUgdHJlZWl0ZW0ncyBhdHRy
aWJ1dGUgcm9sZS4KKyAgICBib29sIHNob3VsZElnbm9yZUFyaWFSb2xlID0gc2hvdWxkSWdub3Jl
QXR0cmlidXRlUm9sZSgpOworICAgIGlmIChtX2FyaWFSb2xlICE9IFVua25vd25Sb2xlICYmICFz
aG91bGRJZ25vcmVBcmlhUm9sZSkKICAgICAgICAgcmV0dXJuIG1fYXJpYVJvbGU7CiAgICAgCiAg
ICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
CShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSw5IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwogCisgICAgLy8gRnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIHRoZSBhdHRyaWJ1
dGUgcm9sZSBzaG91bGQgYmUgaWdub3JlZAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVB
dHRyaWJ1dGVSb2xlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0Kik7CiAgICAg
dm9pZCBzZXRSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVy
ID0gcmVuZGVyZXI7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRyZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlLmgiCisK
KyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJ
dGVtLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisKKyNpbmNsdWRlIDxxdWV1ZT4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAK
K0FjY2Vzc2liaWxpdHlUcmVlOjpBY2Nlc3NpYmlsaXR5VHJlZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKK3sKK30KKyAg
ICAKK0FjY2Vzc2liaWxpdHlUcmVlOjp+QWNjZXNzaWJpbGl0eVRyZWUoKQoreworfQorICAgIAor
UmVmPEFjY2Vzc2liaWxpdHlUcmVlPiBBY2Nlc3NpYmlsaXR5VHJlZTo6Y3JlYXRlKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0
eVRyZWUocmVuZGVyZXIpKTsKK30KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWNjZXNzaWJp
bGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpOworfQorCitBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3Np
YmlsaXR5VHJlZTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQoreworICAgIGlmICgobV9h
cmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IFRyZWVSb2xlKQorICAg
ICAgICByZXR1cm4gbV9hcmlhUm9sZTsKKworICAgIC8vIFRlbXBvcmFyaWx5IHNldCB0cmVlIHJv
bGUgc28gdGhhdCBjaGlsZHJlbidzICJ0cmVlaXRlbSIgYXR0cmlidXRlIHJvbGUgd29uJ3QgYmUg
aWdub3JlZAorICAgIC8vIHdoaWxlIHJ1bm5pbmcgdGhlIGlzVHJlZVZhbGlkKCkgZnVuY3Rpb24u
IFRoZSAidHJlZWl0ZW0iIHJvbGUgaXMgY2FsY3VsYXRlZCBpbgorICAgIC8vIEFjY2Vzc2liaWxp
dHlUcmVlSXRlbTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKS4KKyAgICBtX3JvbGUgPSBU
cmVlUm9sZTsKKyAgICAKKyAgICBib29sIGlzVmFsaWQgPSBpc1RyZWVWYWxpZCgpOworICAgIG1f
cm9sZSA9IGlzVmFsaWQgPyBUcmVlUm9sZSA6IEdyb3VwUm9sZTsKKyAgICB1cGRhdGVDaGlsZHJl
blJvbGUoKTsKKyAgICAKKyAgICByZXR1cm4gbV9yb2xlOworfQorCitib29sIEFjY2Vzc2liaWxp
dHlUcmVlOjppc1RyZWVWYWxpZCgpCit7CisgICAgLy8gQSB2YWxpZCB0cmVlIGNhbiBvbmx5IGhh
dmUgdHJlZWl0ZW0gb3IgZ3JvdXAgb2YgdHJlZWl0ZW1zIGFzIGNoaWxkCisgICAgLy8gaHR0cDov
L3d3dy53My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjdHJlZQorCisgICAgc3RkOjpxdWV1ZTxBY2Nl
c3NpYmlsaXR5T2JqZWN0Kj4gcXVldWU7CisgICAgCisgICAgZm9yIChjb25zdCBhdXRvJiBjaGls
ZCA6IGNoaWxkcmVuKCkpCisgICAgICAgIHF1ZXVlLnB1c2goJipjaGlsZCk7CisKKyAgICB3aGls
ZSAoIXF1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmog
PSBxdWV1ZS5mcm9udCgpOworICAgICAgICBxdWV1ZS5wb3AoKTsKKworICAgICAgICAvLyB3ZSBk
b24ndCBjaGVjayB0aGUgY2hpbGRyZW4gb2YgdHJlZWl0ZW1zCisgICAgICAgIGlmIChheE9iai0+
aXNUcmVlSXRlbSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFheE9i
ai0+aXNHcm91cCgpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgY2hpbGQgOiBheE9iai0+Y2hpbGRyZW4oKSkKKyAgICAgICAgICAgIHF1ZXVl
LnB1c2goJipjaGlsZCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFjY2Vz
c2liaWxpdHlUcmVlOjppZ25vcmVJbnZhbGlkVHJlZUl0ZW0oKQoreworICAgIC8vIFVzZSBhIHF1
ZXVlIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgdHJlZSBub2RlcywgYW5kIGlnbm9yZSBhbGwgdGhl
IHRyZWVpdGVtCisgICAgLy8gYXR0cmlidXRlIHJvbGVzCisgICAgc3RkOjpxdWV1ZTxBY2Nlc3Np
YmlsaXR5T2JqZWN0Kj4gcXVldWU7CisgICAgCisgICAgcXVldWUucHVzaCh0aGlzKTsKKyAgICB3
aGlsZSAoIXF1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhP
YmogPSBxdWV1ZS5mcm9udCgpOworICAgICAgICBxdWV1ZS5wb3AoKTsKKworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGNoaWxkIDogYXhPYmotPmNoaWxkcmVuKCkpCisgICAgICAgICAgICBxdWV1
ZS5wdXNoKCYqY2hpbGQpOworCisgICAgICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0+
KCpheE9iaikpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PEFjY2Vzc2liaWxpdHlUcmVlSXRlbT4o
KmF4T2JqKS5tYXJrVHJlZUl0ZW1JbnZhbGlkKCk7CisgICAgICAgICAgICBheE9iai0+dXBkYXRl
QWNjZXNzaWJpbGl0eVJvbGUoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5VHJlZTo6dXBkYXRlQ2hpbGRyZW5Sb2xlKCkKK3sKKyAgICAvLyBCZWZvcmUgdmFsaWRh
dGluZyB0aGUgdHJlZSwgd2UgYWRkZWQgYWxsIHRoZSBjaGlsZCBub2RlcyBhcyB0aGUgY2hpbGRy
ZW4gdG8gdGhlIHRyZWUuIEJ1dCBldmVudHVhbGx5IHdlCisgICAgLy8gd2FudCB0byBleHBvc2Ug
dGhlIGNoaWxkcmVuIGJhc2VkIG9uIHRoZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0Fs
bG93ZWRDaGlsZE9mVHJlZSgpIGZ1bmN0aW9uLgorICAgIGlmIChpc1RyZWUoKSAmJiAhbV9oYXNW
YWxpZGF0ZWRUcmVlKSB7CisgICAgICAgIG1faGFzVmFsaWRhdGVkVHJlZSA9IHRydWU7CisgICAg
ICAgIG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7CisgICAgICAgIHVwZGF0ZUNoaWxkcmVuSWZOZWNl
c3NhcnkoKTsKKyAgICB9CisgICAgLy8gd2UgbmVlZCB0byBpZ25vcmUgdGhlIHRyZWVpdGVtIHJv
bGVzIGlmIHRoZSB0cmVlIGlzIG1hbGZvcm1lZC4KKyAgICBpZiAoIWlzVHJlZSgpKQorICAgICAg
ICBpZ25vcmVJbnZhbGlkVHJlZUl0ZW0oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRy
ZWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRyZWUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBBY2Nlc3NpYmls
aXR5VHJlZV9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlUcmVlX2gKKworI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xh
c3MgQWNjZXNzaWJpbGl0eVRyZWUgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VHJlZT4gY3JlYXRl
KFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlUcmVlKCk7CisKKyAg
ICBib29sIGhhc1ZhbGlkYXRlZFRyZWUoKSB7IHJldHVybiBtX2hhc1ZhbGlkYXRlZFRyZWU7IH0K
KworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VHJlZShSZW5kZXJPYmplY3Qq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vz
c2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVDaGlsZHJlblJvbGUoKTsK
KyAgICB2b2lkIGlnbm9yZUludmFsaWRUcmVlSXRlbSgpOworICAgIGJvb2wgaXNUcmVlVmFsaWQo
KTsKKworICAgIGJvb2wgbV9oYXNWYWxpZGF0ZWRUcmVlID0gZmFsc2U7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJ
VFkoQWNjZXNzaWJpbGl0eVRyZWUsIGlzVHJlZSgpKQorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0
eVRyZWVfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VHJlZUl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW0uaCIKKworI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKKyAgICAKK0FjY2Vzc2liaWxpdHlUcmVlSXRlbTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJl
bmRlcmVyKQoreworfQorICAgIAorQWNjZXNzaWJpbGl0eVRyZWVJdGVtOjp+QWNjZXNzaWJpbGl0
eVRyZWVJdGVtKCkKK3sKK30KKyAgICAKK1JlZjxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0+IEFjY2Vz
c2liaWxpdHlUcmVlSXRlbTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRyZWVJdGVtKHJlbmRlcmVyKSk7Cit9
CisKK0FjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUcmVlSXRlbTo6ZGV0ZXJtaW5lQWNj
ZXNzaWJpbGl0eVJvbGUoKQoreworICAgIC8vIElmIHRoZSBvYmplY3QgaGFzIG5vdCBiZWVuIG1h
cmtlZCBhcyBpbnZhbGlkLCB3ZSBuZWVkIHRvIGRvIGEgY2hlY2sgdG8gc2VlIGlmIGl0J3MKKyAg
ICAvLyBhIGRlc2NlbmRhbnQgb2YgYSB0cmVlLiBJZiBub3QsIHdlIHdhbnQgdG8gaWdub3JlIHRo
ZSBhdHRyaWJ1dGUgcm9sZS4KKyAgICBpZiAobV9pc1RyZWVJdGVtVmFsaWQpIHsKKyAgICAgICAg
Ym9vbCB0cmVlVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhP
YmogPSBwYXJlbnRPYmplY3QoKTsKKyAgICAgICAgd2hpbGUgKGF4T2JqKSB7CisgICAgICAgICAg
ICBpZiAoYXhPYmotPmlzVHJlZSgpKSB7CisgICAgICAgICAgICAgICAgdHJlZVZhbGlkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF4
T2JqID0gYXhPYmotPnBhcmVudE9iamVjdCgpOworICAgICAgICB9CisgICAgICAgIG1faXNUcmVl
SXRlbVZhbGlkID0gdHJlZVZhbGlkOworICAgIH0KKworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOworfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlUcmVlSXRlbTo6bWFya1RyZWVJdGVtSW52YWxpZCgpCit7CisgICAgbV9pc1Ry
ZWVJdGVtVmFsaWQgPSBmYWxzZTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VHJlZUl0ZW0uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFj
Y2Vzc2liaWxpdHlUcmVlSXRlbV9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlUcmVlSXRlbV9oCisK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlUcmVlSXRlbSBmaW5hbCA6IHB1YmxpYyBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFjY2Vz
c2liaWxpdHlUcmVlSXRlbT4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFj
Y2Vzc2liaWxpdHlUcmVlSXRlbSgpOworCisgICAgdm9pZCBtYXJrVHJlZUl0ZW1JbnZhbGlkKCk7
CisgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAhbV9pc1RyZWVJdGVtVmFsaWQ7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oUmVuZGVyT2JqZWN0Kik7CisgICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOwor
ICAgIGJvb2wgbV9pc1RyZWVJdGVtVmFsaWQgPSB0cnVlOworfTsKKyAgICAKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vz
c2liaWxpdHlUcmVlSXRlbSwgaXNUcmVlSXRlbSgpKQorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0
eVRyZWVJdGVtX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNyBAQAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgogI2ltcG9ydCAi
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVS
b3cuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUcmVlLmgiCiAjaW1wb3J0ICJDaHJvbWUuaCIK
ICNpbXBvcnQgIkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAiQ29sb3JNYWMuaCIKSW5kZXg6IExh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCShyZXZpc2lvbiAx
ODcyNzgpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtbWFwcGluZ3MuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTIsOCArMTIsOCBAQAogPGRpdiBpZD0iZG9jdW1lbnQiIHJvbGU9
ImRvY3VtZW50Ij5kb2N1bWVudCByb2xlPC9kaXY+CiA8ZGl2IGlkPSJzdGF0dXMiIHJvbGU9InN0
YXR1cyI+c3RhdHVzIHJvbGU8L2Rpdj4KIDxkaXYgaWQ9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAi
PnRvb2x0aXAgcm9sZTwvZGl2PgotPGRpdiBpZD0idHJlZSIgcm9sZT0idHJlZSI+dHJlZSByb2xl
PC9kaXY+Ci08ZGl2IGlkPSJ0cmVlaXRlbSIgcm9sZT0idHJlZWl0ZW0iPnRyZWVpdGVtIHJvbGU8
L2Rpdj4KKzxkaXYgaWQ9InRyZWUiIHJvbGU9InRyZWUiPjxkaXYgcm9sZT0idHJlZWl0ZW0iPnRy
ZWUgcm9sZTwvZGl2PjwvZGl2PgorPGRpdiByb2xlPSJ0cmVlIj48ZGl2IGlkPSJ0cmVlaXRlbSIg
cm9sZT0idHJlZWl0ZW0iPnRyZWVpdGVtIHJvbGU8L2Rpdj48L2Rpdj4KIDxicj4KIDxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgogPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhw
b3NlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTYsNyArNiw3IEBAIFRoaXMgdGVzdHMgaWYgYSB0cmVlaXRlbSBjb250YWlucyBhbiBl
bGUKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHRyZWUuY2hpbGRyZW5Db3Vu
dCBpcyAyCitQQVNTIHRyZWUuY2hpbGRyZW5Db3VudCBpcyAzCiBQQVNTIGlucHV0RmllbGQuaXNW
YWxpZCBpcyB0cnVlCiBQQVNTIGlucHV0RmllbGQzLmlzVmFsaWQgaXMgdHJ1ZQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0bWwJKHJldmlzaW9uIDE4NzI3OCkK
KysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw5IEBACiAgICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgaWYgYSB0cmVlaXRlbSBjb250YWlucyBhbiBlbGVtZW50IG90aGVyIHRoYW4gc3RhdGlj
IHRleHQsIGl0IHNob3VsZCBiZSBleHBvc2VkIik7CiAKICAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7Ci0gICAgCS8vIHRyZWUgc2hvdWxkIG9ubHkgaGF2ZSAyIGNoaWxk
LCBzaW5jZSBvbmx5IHRyZWVpdGVtIG9yIHN0YXRpYyB0ZXh0IGNhbiBiZSBhIHRyZWUncyBjaGls
ZAorICAgIAkvLyB0cmVlIHNob3VsZCBvbmx5IGhhdmUgMyBjaGlsZCwgc2luY2UgbWFsZm9ybWVk
IHRyZWUgc2hvdWxkIGFsc28gYmUgYWNjZXNzaWJsZS4KICAgICAgICAgdmFyIHRyZWUgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRyZWUiKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRyZWUuY2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgIHNob3VsZEJl
KCJ0cmVlLmNoaWxkcmVuQ291bnQiLCAiMyIpOwogICAgICAgICAKICAgICAgICAgLy8gaW5wdXQg
ZmlsZWQgaW4gdHJlZWl0ZW0xIHNob3VsZCBiZSBleHBvc2VkCiAgICAgICAgIHZhciBpbnB1dEZp
ZWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJpbnB1
dDEiKTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZv
cm1lZC10cmVlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQt
dHJlZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNiBAQAordGV4dAor
dHJlZWl0ZW0KK0VudHJ5IEEKKworCit0ZXh0CisKK3RleHQKK1RoaXMgdGVzdHMgdGhhdCBhIG1h
bGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIHRyZWUucm9sZSBpcyAiQVhSb2xlOiBBWE91dGxpbmUiCitQQVNTIHRyZWUxLnJv
bGUgaXMgIkFYUm9sZTogQVhHcm91cCIKK1BBU1MgdHJlZTIucm9sZSBpcyAiQVhSb2xlOiBBWEdy
b3VwIgorUEFTUyBpdGVtQSAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUIgIT0gbnVsbCBpcyB0
cnVlCitQQVNTIGl0ZW1DICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRCAhPSBudWxsIGlzIHRy
dWUKK1BBU1MgaXRlbUUgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1GICE9IG51bGwgaXMgdHJ1
ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvbWFsZm9ybWVkLXRyZWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+ICAgCisK
KzxkaXYgcm9sZT0idHJlZSIgaWQ9Imdvb2R0cmVlIj4KKzxkaXYgcm9sZT0idHJlZWl0ZW0iPnRl
eHQ8L2Rpdj4KKzxkaXYgcm9sZT0iZ3JvdXAiPjxkaXYgcm9sZT0iZ3JvdXAiPjxkaXYgcm9sZT0i
dHJlZWl0ZW0iPnRyZWVpdGVtPC9kaXY+PC9kaXY+PC9kaXY+Cis8L2Rpdj4KKyAgICAgICAgCis8
dWwgaWQ9Im1hbGZvcm1lZFRyZWUxIiByb2xlPSJ0cmVlIj4KKzxsaSByb2xlPSJ0cmVlaXRlbSI+
Cis8c3Bhbj48YSBpZD0iSVRFTV9BIiBocmVmPSJodHRwOi8vYXBwbGUuY29tIj5FbnRyeSBBPC9h
Pjwvc3Bhbj4KKzwvbGk+Cis8bGkgaWQ9Imxpc3QxIj48aW5wdXQgaWQ9IklURU1fQiI+PC9saT4K
KzwvdWw+CisKKzx1bCBpZD0ibWFsZm9ybWVkVHJlZTIiIHJvbGU9InRyZWUiPgorPGxpPjxpbnB1
dCBpZD0iSVRFTV9DIj48L2xpPgorPGxpIGlkPSJJVEVNX0QiPnRleHQ8L2xpPgorPC91bD4KKwor
PHVsIGlkPSJtYWxmb3JtZWRUcmVlMyI+Cis8bGkgcm9sZT0idHJlZWl0ZW0iPjxpbnB1dCBpZD0i
SVRFTV9FIj48L2xpPgorPGxpIHJvbGU9InRyZWVpdGVtIiBpZD0iSVRFTV9GIj50ZXh0PC9saT4K
KzwvdWw+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisKKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3Jt
ZWQgdHJlZSBpcyBhY2Nlc3NpYmxlLiIpCisKK2lmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKworICAgIHZhciB0cmVlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJnb29kdHJlZSIpOworICAgIHNob3VsZEJlKCJ0cmVlLnJvbGUiLCAi
XCJBWFJvbGU6IEFYT3V0bGluZVwiIik7CisgICAgdmFyIHRyZWUxID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtYWxmb3JtZWRUcmVlMSIpOworICAgIHNo
b3VsZEJlKCJ0cmVlMS5yb2xlIiwgIlwiQVhSb2xlOiBBWEdyb3VwXCIiKTsKKyAgICB2YXIgdHJl
ZTIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIm1hbGZv
cm1lZFRyZWUyIik7CisgICAgc2hvdWxkQmUoInRyZWUyLnJvbGUiLCAiXCJBWFJvbGU6IEFYR3Jv
dXBcIiIpOworCisgICAgdmFyIGl0ZW1BID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJJVEVNX0EiKTsKKyAgICB2YXIgaXRlbUIgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQiIpOworICAgIHZhciBpdGVt
QyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9D
Iik7CisgICAgdmFyIGl0ZW1EID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJJVEVNX0QiKTsKKyAgICB2YXIgaXRlbUUgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRSIpOworICAgIHZhciBpdGVtRiA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9GIik7Cisg
ICAgCisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVl
KCJpdGVtQiAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtQyAhPSBudWxsIik7Cisg
ICAgc2hvdWxkQmVUcnVlKCJpdGVtRCAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVt
RSAhPSBudWxsIik7CisgICAgc2hvdWxkQmVUcnVlKCJpdGVtRiAhPSBudWxsIik7Cit9CisKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257712</attachid>
            <date>2015-07-28 17:26:42 -0700</date>
            <delta_ts>2015-07-29 18:17:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35955</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzUyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE1LTA3LTI4ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiB0aGUgbWFsZm9ybWVkIHRy
ZWVzLiBGaXhlZCBpdCBieSBpZ25vcmluZworICAgICAgICB0aGUgdHJlZS90cmVlaXRlbSBhdHRy
aWJ1dGUgcm9sZXMgZm9yIHRoZSBtYWxmb3JtZWQgdHJlZXMuCisKKyAgICAgICAgVGVzdDogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnM6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVG
cm9tUmVuZGVyZXIpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Ojppc0FsbG93ZWRDaGlsZE9mVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFJlbmRlck9i
amVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OkFjY2Vzc2liaWxpdHlU
cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjp+QWNjZXNzaWJpbGl0
eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VHJlZTo6Y29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWlu
ZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVl
Ojppc1RyZWVWYWxpZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJl
ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRl
bS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRy
ZWVJdGVtOjp+QWNjZXNzaWJpbGl0eVRyZWVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUcmVlSXRlbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlUcmVlSXRlbTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmg6IEFkZGVkLgorCiAyMDE1LTA3LTI4ICBN
aWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbRnJl
ZXR5cGVdIEFsd2F5cyBhbGxvdyBmb250IG1hdGNoaW5nIGZvciBzdHJvbmcgYWxpYXNlcwpJbmRl
eDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE4NzI3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYzLDYgKzEwNjMsOCBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1
bW4uY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWlu
ZXIuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisgICAg
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHAKKyAgICBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAKIAogICAgIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9N
Q2FsbGJhY2suY3BwCiAgICAgYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTk0LDYgKzcxOTQsMzQgQEAK
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
ICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAg
ICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5
XEFjY2Vzc2liaWxpdHlUcmVlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAiPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdf
V2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
RGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVs
ZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2Vf
V2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVx3aW5cQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYWNjZXNzaWJpbGl0eVx3aW5cQWNjZXNzaWJpbGl0eU9iamVjdFdpbi5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XHdpblxBWE9iamVjdENhY2hlV2lu
LmNwcCIgLz4KQEAgLTE5ODQ4LDYgKzE5ODc2LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRl
ckNvbnRhaW5lci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0
eVxBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRyZWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFYT2JqZWN0Q2FjaGUuaCIgLz4K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlc
d2luXEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyV2luLmgiIC8+CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
CShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2Vi
Q29yZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw2ICs2NjksMTIgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRh
YmxlUm93LmNwcCI+CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4KICAgICA8
L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNj
ZXNzaWJpbGl0eVRyZWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJpbGl0eTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJp
bGl0eVxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJp
bGl0eTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmNwcCI+CiAgICAgICA8RmlsdGVyPmFjY2Vz
c2liaWxpdHk8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc2NjQsNiArNzY3MCwxMiBA
QAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5
VGFibGVSb3cuaCI+CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNj
ZXNzaWJpbGl0eVRyZWUuaCI+CisgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxp
dHlcQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiPgorICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5
PC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxh
Y2Nlc3NpYmlsaXR5XEFYT2JqZWN0Q2FjaGUuaCI+CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxp
dHk8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NzI3OCkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNDM5Nyw2ICs0Mzk3LDEwIEBACiAJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1
RiAvKiBNZWRpYUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4RUE4MDA2MEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEZBNkU1RDBFNENGREVE
MDBENUNGNDkgLyogUGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEZBNkU1RTBFNENG
REVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAg
Ki87IH07CisJCUE5MUM5RkJFMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZC
QzFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwICovOyB9OworCQlBOTFD
OUZCRjFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5MUM5RkJEMUI2NTg2REUwMEFGRkQ1
NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5oICovOyB9OworCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZE
NTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5MUM5RkMwMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0uY3BwICovOyB9OworCQlBOTFDOUZDMzFCNjU5QTY3MDBBRkZENTQgLyog
QWNjZXNzaWJpbGl0eVRyZWVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBOTFDOUZDMTFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRy
ZWVJdGVtLmggKi87IH07CiAJCUE5QzZFNEUzMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlw
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOUM2
RTRFMTBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuY3BwICovOyB9OwogCQlBOUM2RTRF
NDBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5QzZFNEUyMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01N
aW1lVHlwZS5oICovOyB9OwogCQlBOUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5
cGVBcnJheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOUM2RTRFNTBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAgKi87IH07
CkBAIC0xMTc5Miw2ICsxMTc5NiwxMCBAQAogCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyog
TWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUxpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5
IC8qIFBhdHRlcm4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0dGVybi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkg
LyogUGF0dGVybi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXR0
ZXJuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTkxQzlGQkMxQjY1ODZERTAw
QUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTkxQzlGQkQxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUcmVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE5MUM5RkMwMUI2NTlBNjcwMEFGRkQ1NCAvKiBB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlDNkU0RTEwRDc0NUUwNTAwNjQ0MkU5
IC8qIERPTU1pbWVUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01NaW1lVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QzZFNEUy
MEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NTWltZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTlDNkU0RTUwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTU1pbWVUeXBlQXJyYXkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3ODAsNiArMTU3ODgsMTAgQEAKIAkJCQkyOUE4
MTIxRDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oICovLAog
CQkJCTI5ODFDQUExMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5jcHAgKi8s
CiAJCQkJMjlBODEyMEUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmggKi8s
CisJCQkJQTkxQzlGQkMxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCAq
LywKKwkJCQlBOTFDOUZCRDFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCAq
LywKKwkJCQlBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVt
LmNwcCAqLywKKwkJCQlBOTFDOUZDMTFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRy
ZWVJdGVtLmggKi8sCiAJCQkJMjk4MUNBQTIxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxp
dHlMaXN0Qm94LmNwcCAqLywKIAkJCQkyOUE4MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNz
aWJpbGl0eUxpc3RCb3guaCAqLywKIAkJCQkyOTgxQ0FBMzEzMTgyMkVDMDBEMTJGMkEgLyogQWNj
ZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uY3BwICovLApAQCAtMjY4NTMsNiArMjY4NjUsNyBAQAog
CQkJCUIyMjI3OUM4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0IwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDRTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE5
MUM5RkJGMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQjIyMjc5RDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZF
Q29udm9sdmVNYXRyaXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlENDBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI3MzU1LDYgKzI3MzY4LDcgQEAKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYg
LyogV2ViVlRUVG9rZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJD
MUMyNiAvKiBXZWJWVFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODIwMzEwMTM5
NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE5MUM5RkMzMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUY1NUIzREUwMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI1MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFQzQ0QTIxODhGNEJCODAwNjYxREYxIC8qIFdo
ZWVsRXZlbnREZWx0YVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5NDYsNiArMjg5NjAs
NyBAQAogCQkJCTJFQ0Y3QURDMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjNENDYxNDgxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5k
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RTgzNzg0MDlGODVEMUMwMEI4NUFFNCAvKiBK
U0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE5MUM5RkJFMUI2NTg2REUwMEFGRkQ1NCAv
KiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VGQUY0RTBDMzE3
RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYw
RDlCRjBEMkEyNjlBMDBCOTkxOEYgLyogSlNFdmVudEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5M0I3MEQ2OTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzAwNjIsNiArMzAwNzcsNyBAQAogCQkJCTBGRTcxNDA1MTQyMTcw
QjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUQ5MjVCNjcwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEJlaGF2aW9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQTg0RjA0MTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQTkxQzlGQzIxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2li
aWxpdHlUcmVlSXRlbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0
REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFG
NjJFRTcxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGQzRFNDBFMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGlu
YXRvcklPUy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSw2ICs1NSw4IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWUuaCIK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpAQCAt
MjkxLDYgKzI5MywxMiBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZy
CiAgICAgaWYgKG5vZGVIYXNSb2xlKG5vZGUsICJncmlkY2VsbCIpIHx8IG5vZGVIYXNSb2xlKG5v
ZGUsICJjZWxsIikgfHwgbm9kZUhhc1JvbGUobm9kZSwgImNvbHVtbmhlYWRlciIpIHx8IG5vZGVI
YXNSb2xlKG5vZGUsICJyb3doZWFkZXIiKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGw6OmNyZWF0ZShyZW5kZXJlcik7CiAKKyAgICAvLyBhcmlhIHRyZWUKKyAgICBp
ZiAobm9kZUhhc1JvbGUobm9kZSwgInRyZWUiKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlUcmVlOjpjcmVhdGUocmVuZGVyZXIpOworICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAidHJl
ZWl0ZW0iKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUcmVlSXRlbTo6Y3JlYXRlKHJl
bmRlcmVyKTsKKwogI2lmIEVOQUJMRShWSURFTykKICAgICAvLyBtZWRpYSBjb250cm9scwogICAg
IGlmIChub2RlICYmIG5vZGUtPmlzTWVkaWFDb250cm9sRWxlbWVudCgpKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDk3LDcgKzI0OTcsMTIgQEAgQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9i
agogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOwogCi0g
ICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5r
bm93blJvbGUpCisgICAgbV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCk7
CisKKyAgICAvLyBTb21ldGltZXMgd2UgbmVlZCB0byBpZ25vcmUgdGhlIGF0dHJpYnV0ZSByb2xl
LiBMaWtlIGlmIGEgdHJlZSBpcyBtYWxmb3JtZWQsCisgICAgLy8gd2Ugd2FudCB0byBpZ25vcmUg
dGhlIHRyZWVpdGVtJ3MgYXR0cmlidXRlIHJvbGUuCisgICAgYm9vbCBzaG91bGRJZ25vcmVBcmlh
Um9sZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKTsKKyAgICBpZiAobV9hcmlhUm9sZSAh
PSBVbmtub3duUm9sZSAmJiAhc2hvdWxkSWdub3JlQXJpYVJvbGUpCiAgICAgICAgIHJldHVybiBt
X2FyaWFSb2xlOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2RlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwOSw2ICsyMDksOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBwYXNzd29y
ZEZpZWxkVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIC8vIEZ1bmN0aW9uIHRvIGRldGVy
bWluZSBpZiB0aGUgYXR0cmlidXRlIHJvbGUgc2hvdWxkIGJlIGlnbm9yZWQKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJl
bmRlck9iamVjdCopOwogICAgIHZvaWQgc2V0UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nl
c3NpYmlsaXR5VHJlZS5oIgorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MTmFtZXMuaCIKKworI2luY2x1ZGUgPHF1ZXVlPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisgICAgCitBY2Nlc3NpYmlsaXR5VHJlZTo6
QWNjZXNzaWJpbGl0eVRyZWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QocmVuZGVyZXIpCit7Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5VHJl
ZTo6fkFjY2Vzc2liaWxpdHlUcmVlKCkKK3sKK30KKyAgICAKK1JlZjxBY2Nlc3NpYmlsaXR5VHJl
ZT4gQWNjZXNzaWJpbGl0eVRyZWU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFjY2Vzc2liaWxpdHlUcmVlKHJlbmRlcmVyKSk7Cit9
CisgICAgCitib29sIEFjY2Vzc2liaWxpdHlUcmVlOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdu
b3JlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1
bHQoKTsKK30KKworQWNjZXNzaWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWlu
ZUFjY2Vzc2liaWxpdHlSb2xlKCkKK3sKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVB
cmlhUm9sZUF0dHJpYnV0ZSgpKSAhPSBUcmVlUm9sZSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisKKyAgICBy
ZXR1cm4gaXNUcmVlVmFsaWQoKSA/IFRyZWVSb2xlIDogR3JvdXBSb2xlOworfQorCitib29sIEFj
Y2Vzc2liaWxpdHlUcmVlOjppc1RyZWVWYWxpZCgpCit7CisgICAgLy8gQSB2YWxpZCB0cmVlIGNh
biBvbmx5IGhhdmUgdHJlZWl0ZW0gb3IgZ3JvdXAgb2YgdHJlZWl0ZW1zIGFzIGNoaWxkCisgICAg
Ly8gaHR0cDovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjdHJlZQorCisgICAgc3RkOjpx
dWV1ZTxOb2RlKj4gbm9kZVF1ZXVlOworCisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsK
KyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgbm9kZVF1ZXVlLnB1c2goY2hpbGQpOworCisgICAgd2hpbGUg
KCFub2RlUXVldWUuZW1wdHkoKSkgeworICAgICAgICBOb2RlKiBjaGlsZCA9IG5vZGVRdWV1ZS5m
cm9udCgpOworICAgICAgICBub2RlUXVldWUucG9wKCk7CisKKyAgICAgICAgaWYgKGlzPEVsZW1l
bnQ+KCpjaGlsZCkpIHsKKyAgICAgICAgICAgIEVsZW1lbnQmIGVsZW1lbnQgPSBkb3duY2FzdDxF
bGVtZW50PigqY2hpbGQpOworICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUm9s
ZSA9IGVsZW1lbnQuZmFzdEdldEF0dHJpYnV0ZShyb2xlQXR0cik7CisgICAgICAgICAgICBpZiAo
YXJpYVJvbGUuaXNOdWxsKCkgfHwgYXJpYVJvbGUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlh
Um9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUpOworICAgICAgICAgICAgaWYgKHJvbGUgPT0gVHJl
ZUl0ZW1Sb2xlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHJv
bGUgIT0gR3JvdXBSb2xlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICAgICAgZm9yIChOb2RlKiBncm91cENoaWxkID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsgZ3JvdXBD
aGlsZDsgZ3JvdXBDaGlsZCA9IGdyb3VwQ2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgbm9kZVF1ZXVlLnB1c2goZ3JvdXBDaGlsZCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVRyZWVfaAorI2Rl
ZmluZSBBY2Nlc3NpYmlsaXR5VHJlZV9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIEFjY2Vzc2liaWxp
dHlUcmVlIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRyZWU+IGNyZWF0ZShSZW5kZXJPYmplY3Qq
KTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VHJlZSgpOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IEFjY2Vzc2liaWxpdHlUcmVlKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzVHJlZVZhbGlkKCk7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJp
bGl0eVRyZWUsIGlzVHJlZSgpKQorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRyZWVfaApJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRyZWVJdGVtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCIKKworI2lu
Y2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAKK0Fj
Y2Vzc2liaWxpdHlUcmVlSXRlbTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQorewor
fQorICAgIAorQWNjZXNzaWJpbGl0eVRyZWVJdGVtOjp+QWNjZXNzaWJpbGl0eVRyZWVJdGVtKCkK
K3sKK30KKyAgICAKK1JlZjxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0+IEFjY2Vzc2liaWxpdHlUcmVl
SXRlbTo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVRyZWVJdGVtKHJlbmRlcmVyKSk7Cit9CisKK0FjY2Vzc2li
aWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlUcmVlSXRlbTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJv
bGUoKQoreworICAgIC8vIEludmFsaWRhdGUgdGhlIHRyZWVpdGVtIGJlZm9yZSBjaGVja2luZyB0
aGUgcGFyZW50cworICAgIG1faXNUcmVlSXRlbVZhbGlkID0gZmFsc2U7CisgICAgCisgICAgLy8g
V2FsayB0aGUgcGFyZW50IGNoYWluIGxvb2tpbmcgZm9yIGEgcGFyZW50IHRoYXQgaXMgYSB0cmVl
LCB0cmVlaXRlbSBpcyBjb25zaWRlcmVkCisgICAgLy8gdmFsaWQgaWYgaXQncyBpbiBhIHZhbGlk
IHRyZWUKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iaiA9IHBhcmVudE9iamVjdCgpOwor
ICAgIHdoaWxlIChheE9iaikgeworICAgICAgICBpZiAoYXhPYmotPmlzVHJlZSgpKSB7CisgICAg
ICAgICAgICBtX2lzVHJlZUl0ZW1WYWxpZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBheE9iaiA9IGF4T2JqLT5wYXJlbnRPYmplY3QoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNjZXNzaWJp
bGl0eVJvbGUoKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0u
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRyZWVJdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxp
dHlUcmVlSXRlbV9oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlUcmVlSXRlbV9oCisKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlUcmVlSXRlbSBmaW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlU
cmVlSXRlbT4gY3JlYXRlKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxp
dHlUcmVlSXRlbSgpOworCisgICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJv
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9pc1RyZWVJdGVtVmFsaWQ7IH0KKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oUmVuZGVyT2JqZWN0Kik7
CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9s
ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgbV9pc1RyZWVJdGVtVmFsaWQ7Cit9OworICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJ
VFkoQWNjZXNzaWJpbGl0eVRyZWVJdGVtLCBpc1RyZWVJdGVtKCkpCisKKyNlbmRpZiAvLyBBY2Nl
c3NpYmlsaXR5VHJlZUl0ZW1faApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg3NTI4KQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDct
MjggIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogVm9pY2VPdmVy
IHVuYWJsZSB0byBhY2Nlc3MgY29udGVudCBpbiBtYWxmb3JtZWQgdHJlZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzI5NQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTQ4NjI4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtbWFwcGluZ3MuaHRtbDoKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC5odG1sOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9y
bWVkLXRyZWUuaHRtbDogQWRkZWQuCisKIDIwMTUtMDctMjggIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtGcmVldHlwZV0gQWx3YXlzIGFsbG93
IGZvbnQgbWF0Y2hpbmcgZm9yIHN0cm9uZyBhbGlhc2VzCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtbWFwcGluZ3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtbWFwcGluZ3MuaHRtbAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDggKzEyLDggQEAKIDxkaXYgaWQ9ImRvY3VtZW50IiByb2xlPSJkb2N1bWVudCI+ZG9j
dW1lbnQgcm9sZTwvZGl2PgogPGRpdiBpZD0ic3RhdHVzIiByb2xlPSJzdGF0dXMiPnN0YXR1cyBy
b2xlPC9kaXY+CiA8ZGl2IGlkPSJ0b29sdGlwIiByb2xlPSJ0b29sdGlwIj50b29sdGlwIHJvbGU8
L2Rpdj4KLTxkaXYgaWQ9InRyZWUiIHJvbGU9InRyZWUiPnRyZWUgcm9sZTwvZGl2PgotPGRpdiBp
ZD0idHJlZWl0ZW0iIHJvbGU9InRyZWVpdGVtIj50cmVlaXRlbSByb2xlPC9kaXY+Cis8ZGl2IGlk
PSJ0cmVlIiByb2xlPSJ0cmVlIj48ZGl2IHJvbGU9InRyZWVpdGVtIj50cmVlIHJvbGU8L2Rpdj48
L2Rpdj4KKzxkaXYgcm9sZT0idHJlZSI+PGRpdiBpZD0idHJlZWl0ZW0iIHJvbGU9InRyZWVpdGVt
Ij50cmVlaXRlbSByb2xlPC9kaXY+PC9kaXY+CiA8YnI+CiA8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAxODcyNzgpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVp
dGVtLWNoaWxkLWV4cG9zZWQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYs
NyBAQCBUaGlzIHRlc3RzIGlmIGEgdHJlZWl0ZW0gY29udGFpbnMgYW4gZWxlCiBPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyB0cmVlLmNoaWxkcmVuQ291bnQgaXMgMgorUEFTUyB0
cmVlLmNoaWxkcmVuQ291bnQgaXMgMwogUEFTUyBpbnB1dEZpZWxkLmlzVmFsaWQgaXMgdHJ1ZQog
UEFTUyBpbnB1dEZpZWxkMy5pc1ZhbGlkIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQt
ZXhwb3NlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJl
ZWl0ZW0tY2hpbGQtZXhwb3NlZC5odG1sCShyZXZpc2lvbiAxODcyNzgpCisrKyBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOSArMjYsOSBAQAogICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGlmIGEgdHJl
ZWl0ZW0gY29udGFpbnMgYW4gZWxlbWVudCBvdGhlciB0aGFuIHN0YXRpYyB0ZXh0LCBpdCBzaG91
bGQgYmUgZXhwb3NlZCIpOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgewotICAgIAkvLyB0cmVlIHNob3VsZCBvbmx5IGhhdmUgMiBjaGlsZCwgc2luY2Ugb25seSB0
cmVlaXRlbSBvciBzdGF0aWMgdGV4dCBjYW4gYmUgYSB0cmVlJ3MgY2hpbGQKKyAgICAJLy8gdHJl
ZSBzaG91bGQgb25seSBoYXZlIDMgY2hpbGQsIHNpbmNlIG1hbGZvcm1lZCB0cmVlIHNob3VsZCBh
bHNvIGJlIGFjY2Vzc2libGUuCiAgICAgICAgIHZhciB0cmVlID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0cmVlIik7Ci0gICAgICAgIHNob3VsZEJlKCJ0
cmVlLmNoaWxkcmVuQ291bnQiLCAiMiIpOworICAgICAgICBzaG91bGRCZSgidHJlZS5jaGlsZHJl
bkNvdW50IiwgIjMiKTsKICAgICAgICAgCiAgICAgICAgIC8vIGlucHV0IGZpbGVkIGluIHRyZWVp
dGVtMSBzaG91bGQgYmUgZXhwb3NlZAogICAgICAgICB2YXIgaW5wdXRGaWVsZCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiaW5wdXQxIik7CkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKK3RleHQKK3RyZWVpdGVtCitFbnRy
eSBBCisKKwordGV4dAorCit0ZXh0CitUaGlzIHRlc3RzIHRoYXQgYSBtYWxmb3JtZWQgdHJlZSBp
cyBhY2Nlc3NpYmxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0cmVl
LnJvbGUgaXMgIkFYUm9sZTogQVhPdXRsaW5lIgorUEFTUyB0cmVlMS5yb2xlIGlzICJBWFJvbGU6
IEFYR3JvdXAiCitQQVNTIHRyZWUyLnJvbGUgaXMgIkFYUm9sZTogQVhHcm91cCIKK1BBU1MgaXRl
bUEgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1CICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVt
QyAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUQgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1F
ICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRiAhPSBudWxsIGlzIHRydWUKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10
cmVlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjMg
QEAKKzwhRE9DVFlQRSBIVE1MPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PiAgIAorCis8ZGl2IHJvbGU9InRy
ZWUiIGlkPSJnb29kdHJlZSI+Cis8ZGl2IHJvbGU9InRyZWVpdGVtIj50ZXh0PC9kaXY+Cis8ZGl2
IHJvbGU9Imdyb3VwIj48ZGl2IHJvbGU9Imdyb3VwIj48ZGl2IHJvbGU9InRyZWVpdGVtIj50cmVl
aXRlbTwvZGl2PjwvZGl2PjwvZGl2PgorPC9kaXY+CisgICAgICAgIAorPHVsIGlkPSJtYWxmb3Jt
ZWRUcmVlMSIgcm9sZT0idHJlZSI+Cis8bGkgcm9sZT0idHJlZWl0ZW0iPgorPHNwYW4+PGEgaWQ9
IklURU1fQSIgaHJlZj0iaHR0cDovL2FwcGxlLmNvbSI+RW50cnkgQTwvYT48L3NwYW4+Cis8L2xp
PgorPGxpIGlkPSJsaXN0MSI+PGlucHV0IGlkPSJJVEVNX0IiPjwvbGk+Cis8L3VsPgorCis8dWwg
aWQ9Im1hbGZvcm1lZFRyZWUyIiByb2xlPSJ0cmVlIj4KKzxsaT48aW5wdXQgaWQ9IklURU1fQyI+
PC9saT4KKzxsaSBpZD0iSVRFTV9EIj50ZXh0PC9saT4KKzwvdWw+CisKKzx1bCBpZD0ibWFsZm9y
bWVkVHJlZTMiPgorPGxpIHJvbGU9InRyZWVpdGVtIj48aW5wdXQgaWQ9IklURU1fRSI+PC9saT4K
KzxsaSByb2xlPSJ0cmVlaXRlbSIgaWQ9IklURU1fRiI+dGV4dDwvbGk+Cis8L3VsPgorCis8cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0
PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIHRyZWUgaXMgYWNj
ZXNzaWJsZS4iKQorCitpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisKKyAg
ICB2YXIgdHJlZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiZ29vZHRyZWUiKTsKKyAgICBzaG91bGRCZSgidHJlZS5yb2xlIiwgIlwiQVhSb2xlOiBBWE91
dGxpbmVcIiIpOworICAgIHZhciB0cmVlMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgibWFsZm9ybWVkVHJlZTEiKTsKKyAgICBzaG91bGRCZSgidHJlZTEu
cm9sZSIsICJcIkFYUm9sZTogQVhHcm91cFwiIik7CisgICAgdmFyIHRyZWUyID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtYWxmb3JtZWRUcmVlMiIpOwor
ICAgIHNob3VsZEJlKCJ0cmVlMi5yb2xlIiwgIlwiQVhSb2xlOiBBWEdyb3VwXCIiKTsKKworICAg
IHZhciBpdGVtQSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiSVRFTV9BIik7CisgICAgdmFyIGl0ZW1CID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJJVEVNX0IiKTsKKyAgICB2YXIgaXRlbUMgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQyIpOworICAgIHZhciBp
dGVtRCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRF
TV9EIik7CisgICAgdmFyIGl0ZW1FID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJJVEVNX0UiKTsKKyAgICB2YXIgaXRlbUYgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRiIpOworICAgIAorICAgIHNob3Vs
ZEJlVHJ1ZSgiaXRlbUEgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaXRlbUIgIT0gbnVs
bCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaXRlbUMgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1
ZSgiaXRlbUQgIT0gbnVsbCIpOworICAgIHNob3VsZEJlVHJ1ZSgiaXRlbUUgIT0gbnVsbCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiaXRlbUYgIT0gbnVsbCIpOworfQorCis8L3NjcmlwdD4KKworPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257795</attachid>
            <date>2015-07-29 18:17:33 -0700</date>
            <delta_ts>2015-07-29 18:45:46 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35686</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE1LTA3LTI5ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiBtYWxmb3JtZWQgdHJlZXMu
IEZpeGVkIGl0IGJ5IGlnbm9yaW5nCisgICAgICAgIHRoZSB0cmVlL3RyZWVpdGVtIGF0dHJpYnV0
ZSByb2xlcyBmb3IgdGhvc2UgbWFsZm9ybWVkIHRyZWVzLgorCisgICAgICAgIFRlc3Q6IHBsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWwKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2o6
CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJv
bVJlbmRlcmVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkcmVuKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFkZENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUp
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6Y2FuSGF2ZUNoaWxkcmVu
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc0NoaWxkcmVuKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJtaW5lQWNj
ZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRy
ZWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjpBY2Nl
c3NpYmlsaXR5VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VHJlZTo6fkFj
Y2Vzc2liaWxpdHlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWU6OmNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVl
OjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VHJlZTo6aXNUcmVlVmFsaWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRyZWUuaDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5VHJlZUl0ZW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlU
cmVlSXRlbTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlUcmVlSXRlbTo6fkFjY2Vzc2liaWxpdHlUcmVlSXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oOiBBZGRlZC4KKwogMjAx
NS0wNy0yOSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVzZSBydmFsdWUgcmVmZXJlbmNlcyBpbiBGb250Q2FzY2FkZQpJbmRleDogU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDE4NzI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYzLDYgKzEwNjMsOCBAQCBzZXQoV2ViQ29yZV9TT1VS
Q0VTCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4uY3BwCiAgICAg
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250YWluZXIuY3BwCiAgICAg
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCisgICAgYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VHJlZS5jcHAKKyAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
cmVlSXRlbS5jcHAKIAogICAgIGJpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3Bw
CiAgICAgYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcApJbmRleDog
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCShyZXZp
c2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MTk0LDYgKzcxOTQsMzQgQEAKICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBp
bGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxp
dHlUcmVlLmNwcCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwk
KFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0
aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVp
bGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlv
bil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3Vy
YXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9t
QnVpbGQ+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nl
c3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJv
bUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCci
PnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRp
dGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJv
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8
V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxk
IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4z
MiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENv
bmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50
cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRp
b249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fp
cm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVp
bGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9u
fHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVx3aW5cQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJXaW4uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJp
bGl0eVx3aW5cQWNjZXNzaWJpbGl0eU9iamVjdFdpbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XHdpblxBWE9iamVjdENhY2hlV2luLmNwcCIgLz4KQEAg
LTE5ODQ4LDYgKzE5ODc2LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2li
aWxpdHlcQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmls
aXR5VGFibGVSb3cuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxp
dHlcQWNjZXNzaWJpbGl0eVRyZWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFj
Y2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFYT2JqZWN0Q2FjaGUuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCIg
Lz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcd2luXEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyV2luLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShyZXZpc2lvbiAx
ODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9q
LmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw2ICs2NjksMTIgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcCI+
CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4K
KyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRy
ZWUuY3BwIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJpbGl0eTwvRmlsdGVyPgorICAgIDwvQ2xD
b21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0uY3BwIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJpbGl0eTwvRmlsdGVy
PgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJp
bGl0eVxBWE9iamVjdENhY2hlLmNwcCI+CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0Zp
bHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTc2NjQsNiArNzY3MCwxMiBAQAogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCI+
CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRy
ZWUuaCI+CisgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4KKyAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJp
bGl0eVRyZWVJdGVtLmgiPgorICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+Cisg
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5
XEFYT2JqZWN0Q2FjaGUuaCI+CiAgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE4NzI3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDM5Nyw2ICs0Mzk3LDEwIEBACiAJCUE4RUE4MDBFMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxp
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4RUE4
MDA2MEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyog
UGF0dGVybi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEZBNkU1RTBFNENGREVEMDBENUNGNDkg
LyogUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5jcHAgKi87IH07CisJCUE5
MUM5RkJFMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZCQzFCNjU4NkRFMDBB
RkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwICovOyB9OworCQlBOTFDOUZCRjFCNjU4NkRF
MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE5MUM5RkJEMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3Np
YmlsaXR5VHJlZS5oICovOyB9OworCQlBOTFDOUZDMjFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNz
aWJpbGl0eVRyZWVJdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE5MUM5RkMwMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW0uY3BwICovOyB9OworCQlBOTFDOUZDMzFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0
eVRyZWVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOTFDOUZDMTFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmggKi87
IH07CiAJCUE5QzZFNEUzMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOUM2RTRFMTBENzQ1RTA1
MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuY3BwICovOyB9OwogCQlBOUM2RTRFNDBENzQ1RTA1MDA2
NDQyRTkgLyogRE9NTWltZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE5QzZFNEUyMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5oICov
OyB9OwogCQlBOUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOUM2RTRFNTBE
NzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAgKi87IH07CkBAIC0xMTc5Miw2
ICsxMTc5NiwxMCBAQAogCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUxpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUIwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF0dGVybi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBOEZBNkU1QzBFNENGREVEMDBENUNGNDkgLyogUGF0dGVybi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXR0ZXJuLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTkxQzlGQkMxQjY1ODZERTAwQUZGRDU0IC8qIEFj
Y2Vzc2liaWxpdHlUcmVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlUcmVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTkx
QzlGQkQxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUcmVlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUE5MUM5RkMwMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5
VHJlZUl0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWNjZXNz
aWJpbGl0eVRyZWVJdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTkxQzlG
QzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlDNkU0RTEwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01NaW1lVHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QzZFNEUyMEQ3NDVFMDUwMDY0
NDJFOSAvKiBET01NaW1lVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NTWltZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTlDNkU0RTUwRDc0
NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERPTU1pbWVUeXBlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU3ODAsNiArMTU3ODgsMTAgQEAKIAkJCQkyOUE4MTIxRDBGQkI5QzFE
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oICovLAogCQkJCTI5ODFDQUEx
MTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5jcHAgKi8sCiAJCQkJMjlBODEy
MEUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0LmggKi8sCisJCQkJQTkxQzlG
QkMxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCAqLywKKwkJCQlBOTFD
OUZCRDFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCAqLywKKwkJCQlBOTFD
OUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCAqLywKKwkJ
CQlBOTFDOUZDMTFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmggKi8s
CiAJCQkJMjk4MUNBQTIxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmNw
cCAqLywKIAkJCQkyOUE4MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RC
b3guaCAqLywKIAkJCQkyOTgxQ0FBMzEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uY3BwICovLApAQCAtMjY4NTMsNiArMjY4NjUsNyBAQAogCQkJCUIyMjI3OUM4
MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUJsZW5kRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjIyMjc5Q0IwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlDRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUE5MUM5RkJGMUI2NTg2
REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIy
Mjc5RDEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFQ29tcG9zaXRlRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMTkyMTMyNzUxMUMwRTZCQjAwNDU2MjM4IC8qIFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyNzlENDBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzU1
LDYgKzI3MzY4LDcgQEAKIAkJCQlCMTBCNjk4MDE0MEMxNzQwMDBCQzFDMjYgLyogV2ViVlRUVG9r
ZW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUIxMEI2OTgyMTQwQzE3NDAwMEJDMUMyNiAvKiBXZWJW
VFRUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEODIwMzEwMTM5NUFDRTcwMEY5NTZD
NiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE5MUM5RkMzMUI2
NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCBpbiBIZWFkZXJzICovLAog
CQkJCUY1NUIzREUwMTI1MUYxMkQwMDNFRjI2OSAvKiBXZWVrSW5wdXRUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTAzMUI1MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNFQzQ0QTIxODhGNEJCODAwNjYxREYxIC8qIFdoZWVsRXZlbnREZWx0
YVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMjg5NDYsNiArMjg5NjAsNyBAQAogCQkJCTJF
Q0Y3QURDMTAxNjJCMzgwMDQyN0RFNyAvKiBKU0Vycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjNENDYxNDgxMTYxRDUzMjAwQ0EwRDA5IC8qIEpTRXJyb3JIYW5kbGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0RTgzNzg0MDlGODVEMUMwMEI4NUFFNCAvKiBKU0V2ZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUE5MUM5RkJFMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmls
aXR5VHJlZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0VGQUY0RTBDMzE3RTY5MDBGQTgxRjYg
LyogSlNFdmVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwRDlCRjBEMkEyNjlB
MDBCOTkxOEYgLyogSlNFdmVudEV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0I3
MEQ2OTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzAwNjIsNiArMzAwNzcsNyBAQAogCQkJCTBGRTcxNDA1MTQyMTcwQjgwMERCMzNCQSAv
KiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ5MjVCNjcwRjY0
RDRERDAwQjg0N0YwIC8qIFNjcm9sbEJlaGF2aW9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
QTg0RjA0MTQzQkE3QkQwMDUxRDE1MyAvKiBTY3JvbGxDb250cm9sbGVyLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJQTkxQzlGQzIxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRl
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0REYwQzAgLyogU2Ny
b2xsaW5nQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGNjJFRTcxNERBMjJB
NzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGQzRFNDBFMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdDb29yZGluYXRvcklPUy5tbSBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw4
IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eVRhYmxlUm93LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWUuaCIKKyNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkVkaXRvci5oIgogI2luY2x1ZGUgIkVsZW1lbnRJdGVyYXRvci5oIgpAQCAtMjkxLDYgKzI5Mywx
MiBAQCBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZyCiAgICAgaWYgKG5v
ZGVIYXNSb2xlKG5vZGUsICJncmlkY2VsbCIpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjZWxsIikg
fHwgbm9kZUhhc1JvbGUobm9kZSwgImNvbHVtbmhlYWRlciIpIHx8IG5vZGVIYXNSb2xlKG5vZGUs
ICJyb3doZWFkZXIiKSkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGw6
OmNyZWF0ZShyZW5kZXJlcik7CiAKKyAgICAvLyBhcmlhIHRyZWUKKyAgICBpZiAobm9kZUhhc1Jv
bGUobm9kZSwgInRyZWUiKSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUcmVlOjpjcmVh
dGUocmVuZGVyZXIpOworICAgIGlmIChub2RlSGFzUm9sZShub2RlLCAidHJlZWl0ZW0iKSkKKyAg
ICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUcmVlSXRlbTo6Y3JlYXRlKHJlbmRlcmVyKTsKKwog
I2lmIEVOQUJMRShWSURFTykKICAgICAvLyBtZWRpYSBjb250cm9scwogICAgIGlmIChub2RlICYm
IG5vZGUtPmlzTWVkaWFDb250cm9sRWxlbWVudCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHJldmlzaW9uIDE4NzI3
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NzIsNiArNzcyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZHJlbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBY2Nlc3Np
YmlsaXR5T2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFjY2Vzc2li
aWxpdHlPYmplY3QqLCB1bnNpZ25lZCkgeyB9CisKKyAgICAvLyBGdW5jdGlvbiB0byBkZXRlcm1p
bmUgaWYgdGhlIGF0dHJpYnV0ZSByb2xlIHNob3VsZCBiZSBpZ25vcmVkCisgICAgdmlydHVhbCBi
b29sIHNob3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9o
YXZlQ2hpbGRyZW47IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTg3Mjc4
KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5Nyw3ICsyNDk3LDkgQEAgQWNjZXNzaWJpbGl0
eVJvbGUgQWNjZXNzaWJpbGl0eVJlbmRlck9iagogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAg
ICAgcmV0dXJuIFVua25vd25Sb2xlOwogCi0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5l
QXJpYVJvbGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJvbGUpCisgICAgLy8gU29tZXRpbWVzIHdl
IG5lZWQgdG8gaWdub3JlIHRoZSBhdHRyaWJ1dGUgcm9sZS4gTGlrZSBpZiBhIHRyZWUgaXMgbWFs
Zm9ybWVkLAorICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSdzIGF0dHJpYnV0
ZSByb2xlLgorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRl
KCkpICE9IFVua25vd25Sb2xlICYmICFzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkpCiAgICAg
ICAgIHJldHVybiBtX2FyaWFSb2xlOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVy
LT5ub2RlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlUcmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlUcmVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZS5oIgorCisjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlSXRlbS5o
IgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CisgICAgCitBY2Nlc3NpYmlsaXR5VHJlZTo6QWNjZXNzaWJpbGl0eVRyZWUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKKyAgICA6IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
cmVuZGVyZXIpCit7Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5VHJlZTo6fkFjY2Vzc2liaWxpdHlU
cmVlKCkKK3sKK30KKyAgICAKK1JlZjxBY2Nlc3NpYmlsaXR5VHJlZT4gQWNjZXNzaWJpbGl0eVRy
ZWU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc2liaWxpdHlUcmVlKHJlbmRlcmVyKSk7Cit9CisgICAgCitib29sIEFjY2Vz
c2liaWxpdHlUcmVlOjpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWRCeURlZmF1bHQoKTsKK30KKworQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eVRyZWU6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKK3sKKyAgICBpZiAoKG1fYXJpYVJvbGUgPSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgp
KSAhPSBUcmVlUm9sZSkKKyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisKKyAgICByZXR1cm4gaXNUcmVlVmFsaWQo
KSA/IFRyZWVSb2xlIDogR3JvdXBSb2xlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlUcmVlOjpp
c1RyZWVWYWxpZCgpIGNvbnN0Cit7CisgICAgLy8gQSB2YWxpZCB0cmVlIGNhbiBvbmx5IGhhdmUg
dHJlZWl0ZW0gb3IgZ3JvdXAgb2YgdHJlZWl0ZW1zIGFzIGNoaWxkCisgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvd2FpLWFyaWEvcm9sZXMjdHJlZQorCisgICAgRGVxdWU8Tm9kZSo+IHF1ZXVl
OworCisgICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoYXV0byBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIHF1ZXVl
LmFwcGVuZChjaGlsZCk7CisKKyAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAg
ICBOb2RlKiBjaGlsZCA9IHF1ZXVlLnRha2VGaXJzdCgpOworCisgICAgICAgIGlmICghaXM8RWxl
bWVudD4oKmNoaWxkKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAobm9kZUhh
c1JvbGUoY2hpbGQsICJ0cmVlaXRlbSIpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmICghbm9kZUhhc1JvbGUoY2hpbGQsICJncm91cCIpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGZvciAoYXV0byBncm91cENoaWxkID0gY2hpbGQtPmZpcnN0Q2hpbGQo
KTsgZ3JvdXBDaGlsZDsgZ3JvdXBDaGlsZCA9IGdyb3VwQ2hpbGQtPm5leHRTaWJsaW5nKCkpCisg
ICAgICAgICAgICBxdWV1ZS5hcHBlbmQoZ3JvdXBDaGlsZCk7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlUcmVlX2gKKyNkZWZpbmUgQWNj
ZXNzaWJpbGl0eVRyZWVfaAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5VHJlZSBm
aW5hbCA6IHB1YmxpYyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlUcmVlPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CisgICAg
dmlydHVhbCB+QWNjZXNzaWJpbGl0eVRyZWUoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBB
Y2Nlc3NpYmlsaXR5VHJlZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29tcHV0
ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1RyZWVWYWxpZCgpIGNvbnN0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxp
dHlUcmVlLCBpc1RyZWUoKSkKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlUcmVlX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
cmVlSXRlbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiCisKKyNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisgICAgCitBY2Nl
c3NpYmlsaXR5VHJlZUl0ZW06OkFjY2Vzc2liaWxpdHlUcmVlSXRlbShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikKK3sKK30K
KyAgICAKK0FjY2Vzc2liaWxpdHlUcmVlSXRlbTo6fkFjY2Vzc2liaWxpdHlUcmVlSXRlbSgpCit7
Cit9CisgICAgCitSZWY8QWNjZXNzaWJpbGl0eVRyZWVJdGVtPiBBY2Nlc3NpYmlsaXR5VHJlZUl0
ZW06OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFjY2Vzc2liaWxpdHlUcmVlSXRlbShyZW5kZXJlcikpOworfQorCitBY2Nlc3NpYmls
aXR5Um9sZSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkKK3sKKyAgICAvLyBJbnZhbGlkYXRlIHRoZSB0cmVlaXRlbSBiZWZvcmUgY2hlY2tpbmcgdGhl
IHBhcmVudHMKKyAgICBtX2lzVHJlZUl0ZW1WYWxpZCA9IGZhbHNlOworICAgIAorICAgIC8vIFdh
bGsgdGhlIHBhcmVudCBjaGFpbiBsb29raW5nIGZvciBhIHBhcmVudCB0aGF0IGlzIGEgdHJlZSwg
dHJlZWl0ZW0gaXMgY29uc2lkZXJlZAorICAgIC8vIHZhbGlkIGlmIGl0J3MgaW4gYSB2YWxpZCB0
cmVlCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbnVsbHB0cjsKKyAgICBmb3Ig
KHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQgJiYgIXBhcmVudC0+aXNUcmVlKCk7IHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsgfQorICAgIG1faXNUcmVlSXRlbVZhbGlk
ID0gcGFyZW50OworCisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRl
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVRyZWVJdGVtLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW1faAorI2RlZmluZSBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW1f
aAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0gZmluYWwgOiBwdWJs
aWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW0+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFs
IH5BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oKTsKKworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25v
cmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1faXNUcmVlSXRlbVZh
bGlkOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eVRyZWVJdGVtKFJl
bmRlck9iamVjdCopOworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNj
ZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKKyAgICBib29sIG1faXNUcmVlSXRlbVZhbGlkOwor
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxpdHlUcmVlSXRlbSwgaXNUcmVlSXRlbSgpKQorCisj
ZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRyZWVJdGVtX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzU2
OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3
IEBACisyMDE1LTA3LTI5ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
QVg6IFZvaWNlT3ZlciB1bmFibGUgdG8gYWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdz
Lmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9z
ZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQt
dHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWw6IEFkZGVkLgorCiAyMDE1LTA3LTI5ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBzcGFubmVyIHBs
YWNlaG9sZGVyIGZyb20gbV9zcGFubmVyTWFwIHdoZW4gdGhlIHBsYWNlaG9sZGVyIG9iamVjdApJ
bmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWwJKHJl
dmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1tYXBwaW5n
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4IEBACiA8ZGl2IGlkPSJkb2N1bWVu
dCIgcm9sZT0iZG9jdW1lbnQiPmRvY3VtZW50IHJvbGU8L2Rpdj4KIDxkaXYgaWQ9InN0YXR1cyIg
cm9sZT0ic3RhdHVzIj5zdGF0dXMgcm9sZTwvZGl2PgogPGRpdiBpZD0idG9vbHRpcCIgcm9sZT0i
dG9vbHRpcCI+dG9vbHRpcCByb2xlPC9kaXY+Ci08ZGl2IGlkPSJ0cmVlIiByb2xlPSJ0cmVlIj50
cmVlIHJvbGU8L2Rpdj4KLTxkaXYgaWQ9InRyZWVpdGVtIiByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0
ZW0gcm9sZTwvZGl2PgorPGRpdiBpZD0idHJlZSIgcm9sZT0idHJlZSI+PGRpdiByb2xlPSJ0cmVl
aXRlbSI+dHJlZSByb2xlPC9kaXY+PC9kaXY+Cis8ZGl2IHJvbGU9InRyZWUiPjxkaXYgaWQ9InRy
ZWVpdGVtIiByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW0gcm9sZTwvZGl2PjwvZGl2PgogPGJyPgog
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KSW5kZXg6
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0tY2hpbGQtZXhwb3NlZC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1j
aGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRh
aW5zIGFuIGVsZQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgdHJlZS5jaGls
ZHJlbkNvdW50IGlzIDIKK1BBU1MgdHJlZS5jaGlsZHJlbkNvdW50IGlzIDMKIFBBU1MgaW5wdXRG
aWVsZC5pc1ZhbGlkIGlzIHRydWUKIFBBU1MgaW5wdXRGaWVsZDMuaXNWYWxpZCBpcyB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAkocmV2aXNpb24g
MTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBv
c2VkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDkgQEAKICAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFuIGVsZW1lbnQgb3RoZXIgdGhh
biBzdGF0aWMgdGV4dCwgaXQgc2hvdWxkIGJlIGV4cG9zZWQiKTsKIAogICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAJLy8gdHJlZSBzaG91bGQgb25seSBoYXZl
IDIgY2hpbGQsIHNpbmNlIG9ubHkgdHJlZWl0ZW0gb3Igc3RhdGljIHRleHQgY2FuIGJlIGEgdHJl
ZSdzIGNoaWxkCisgICAgCS8vIHRyZWUgc2hvdWxkIG9ubHkgaGF2ZSAzIGNoaWxkLCBzaW5jZSBt
YWxmb3JtZWQgdHJlZSBzaG91bGQgYWxzbyBiZSBhY2Nlc3NpYmxlLgogICAgICAgICB2YXIgdHJl
ZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidHJlZSIp
OwotICAgICAgICBzaG91bGRCZSgidHJlZS5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAg
c2hvdWxkQmUoInRyZWUuY2hpbGRyZW5Db3VudCIsICIzIik7CiAgICAgICAgIAogICAgICAgICAv
LyBpbnB1dCBmaWxlZCBpbiB0cmVlaXRlbTEgc2hvdWxkIGJlIGV4cG9zZWQKICAgICAgICAgdmFy
IGlucHV0RmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoImlucHV0MSIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21h
bGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI2IEBA
Cit0ZXh0Cit0cmVlaXRlbQorRW50cnkgQQorCisKK3RleHQKKwordGV4dAorVGhpcyB0ZXN0cyB0
aGF0IGEgbWFsZm9ybWVkIHRyZWUgaXMgYWNjZXNzaWJsZS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgdHJlZS5yb2xlIGlzICdBWFJvbGU6IEFYT3V0bGluZScKK1BBU1Mg
dHJlZTEucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFTUyB0cmVlMi5yb2xlIGlzICdBWFJv
bGU6IEFYR3JvdXAnCitQQVNTIGl0ZW1BICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtQiAhPSBu
dWxsIGlzIHRydWUKK1BBU1MgaXRlbUMgIT0gbnVsbCBpcyB0cnVlCitQQVNTIGl0ZW1EICE9IG51
bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRSAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUYgIT0gbnVs
bCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9y
bWVkLXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4gICAKKworPGRpdiByb2xlPSJ0cmVlIiBpZD0iZ29vZHRyZWUiPgorPGRpdiByb2xlPSJ0cmVl
aXRlbSI+dGV4dDwvZGl2PgorPGRpdiByb2xlPSJncm91cCI+PGRpdiByb2xlPSJncm91cCI+PGRp
diByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW08L2Rpdj48L2Rpdj48L2Rpdj4KKzwvZGl2PgorICAg
ICAgICAKKzx1bCBpZD0ibWFsZm9ybWVkVHJlZTEiIHJvbGU9InRyZWUiPgorPGxpIHJvbGU9InRy
ZWVpdGVtIj4KKzxzcGFuPjxhIGlkPSJJVEVNX0EiIGhyZWY9Imh0dHA6Ly9hcHBsZS5jb20iPkVu
dHJ5IEE8L2E+PC9zcGFuPgorPC9saT4KKzxsaSBpZD0ibGlzdDEiPjxpbnB1dCBpZD0iSVRFTV9C
Ij48L2xpPgorPC91bD4KKworPHVsIGlkPSJtYWxmb3JtZWRUcmVlMiIgcm9sZT0idHJlZSI+Cis8
bGk+PGlucHV0IGlkPSJJVEVNX0MiPjwvbGk+Cis8bGkgaWQ9IklURU1fRCI+dGV4dDwvbGk+Cis8
L3VsPgorCis8dWwgaWQ9Im1hbGZvcm1lZFRyZWUzIj4KKzxsaSByb2xlPSJ0cmVlaXRlbSI+PGlu
cHV0IGlkPSJJVEVNX0UiPjwvbGk+Cis8bGkgcm9sZT0idHJlZWl0ZW0iIGlkPSJJVEVNX0YiPnRl
eHQ8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBh
IG1hbGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuIikKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworCisgICAgdmFyIHRyZWUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdvb2R0cmVlIik7CisgICAgc2hvdWxkQmUoInRyZWUu
cm9sZSIsICInQVhSb2xlOiBBWE91dGxpbmUnIik7CisgICAgdmFyIHRyZWUxID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJtYWxmb3JtZWRUcmVlMSIpOwor
ICAgIHNob3VsZEJlKCJ0cmVlMS5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisgICAgdmFy
IHRyZWUyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJt
YWxmb3JtZWRUcmVlMiIpOworICAgIHNob3VsZEJlKCJ0cmVlMi5yb2xlIiwgIidBWFJvbGU6IEFY
R3JvdXAnIik7CisKKyAgICB2YXIgaXRlbUEgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQSIpOworICAgIHZhciBpdGVtQiA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9CIik7CisgICAgdmFyIGl0
ZW1DID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJJVEVN
X0MiKTsKKyAgICB2YXIgaXRlbUQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoIklURU1fRCIpOworICAgIHZhciBpdGVtRSA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9FIik7CisgICAgdmFyIGl0ZW1GID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJJVEVNX0YiKTsK
KyAgICAKKyAgICBzaG91bGRCZVRydWUoIml0ZW1BICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRy
dWUoIml0ZW1CICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1DICE9IG51bGwiKTsK
KyAgICBzaG91bGRCZVRydWUoIml0ZW1EICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0
ZW1FICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1GICE9IG51bGwiKTsKK30KKwor
PC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCg==
</data>
<flag name="review"
          id="282971"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257797</attachid>
            <date>2015-07-29 18:45:46 -0700</date>
            <delta_ts>2015-07-30 04:10:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>35593</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NzU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE1LTA3LTI5ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8g
YWNjZXNzIGNvbnRlbnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzE0ODYyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFZvaWNlT3ZlciBpcyBza2lwcGluZyB0aGUgY29udGVudCBvZiBtYWxmb3JtZWQgdHJlZXMu
IFRoaXMgZml4ZXMgdGhlIHByb2JsZW0KKyAgICAgICAgYnkgaGF2aW5nIHRoZSB0cmVlIGNoZWNr
IGlmIGl0IGhhcyB2YWxpZCBjaGlsZHJlbiAodHJlZWl0ZW1zKSBhbmQgbWFrZXMgdHJlZWl0ZW1z
CisgICAgICAgIGNoZWNrIGlmIHRoZXkgYXJlIGluc2lkZSB0cmVlcy4KKworICAgICAgICBUZXN0
OiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
czoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUZyb21SZW5kZXJlcik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGls
ZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjphZGRDaGlsZCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjppbnNlcnRDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzaG91bGRJZ25vcmVBdHRyaWJ1
dGVSb2xlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNhbkhhdmVD
aGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNDaGls
ZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGVy
bWluZUFjY2Vzc2liaWxpdHlSb2xlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUcmVlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VHJl
ZTo6QWNjZXNzaWJpbGl0eVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRy
ZWU6On5BY2Nlc3NpYmlsaXR5VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
VHJlZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUcmVlOjpjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5VHJlZTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVRyZWU6OmlzVHJlZVZhbGlkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUcmVlLmg6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5VHJlZUl0ZW06OkFjY2Vzc2liaWxpdHlUcmVlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06On5BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtOjpkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaDogQWRkZWQu
CisKIDIwMTUtMDctMjkgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4K
IAogICAgICAgICBVc2UgcnZhbHVlIHJlZmVyZW5jZXMgaW4gRm9udENhc2NhZGUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTA2Myw2ICsxMDYzLDggQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmNw
cAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmNw
cAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorICAgIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCisgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VHJlZUl0ZW0uY3BwCiAKICAgICBiaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxi
YWNrLmNwcAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJv
agkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dl
YkNvcmUudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzE5NCw2ICs3MTk0LDM0IEBACiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nl
c3NpYmlsaXR5VHJlZS5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJv
bUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJh
dGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8V2luMzInIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVk
RnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmln
dXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21C
dWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRp
b24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChD
b25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwIj4KKyAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWls
ZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19X
aW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVn
U3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1
Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21C
dWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8
eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQg
Q29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNh
aXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9t
QnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNl
X1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVk
RnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJv
ZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcd2luXEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyV2luLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFj
Y2Vzc2liaWxpdHlcd2luXEFjY2Vzc2liaWxpdHlPYmplY3RXaW4uY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVx3aW5cQVhPYmplY3RDYWNoZVdpbi5jcHAi
IC8+CkBAIC0xOTg0OCw2ICsxOTg3Niw4IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxh
Y2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBY2Nlc3NpYmlsaXR5VGFibGVIZWFkZXJDb250
YWluZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNj
ZXNzaWJpbGl0eVRhYmxlUm93LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nl
c3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XHdpblxB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oIiAvPgpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2
aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUu
dmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC02NjksNiArNjY5LDEyIEBACiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZVJv
dy5jcHAiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2li
aWxpdHlUcmVlLmNwcCI+CisgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlc
QWNjZXNzaWJpbGl0eVRyZWVJdGVtLmNwcCI+CisgICAgICA8RmlsdGVyPmFjY2Vzc2liaWxpdHk8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGFj
Y2Vzc2liaWxpdHlcQVhPYmplY3RDYWNoZS5jcHAiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmls
aXR5PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC03NjY0LDYgKzc2NzAsMTIgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJpbGl0eVRhYmxl
Um93LmgiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2li
aWxpdHlUcmVlLmgiPgorICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+CisgICAg
PC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFj
Y2Vzc2liaWxpdHlUcmVlSXRlbS5oIj4KKyAgICAgIDxGaWx0ZXI+YWNjZXNzaWJpbGl0eTwvRmls
dGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNz
aWJpbGl0eVxBWE9iamVjdENhY2hlLmgiPgogICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9G
aWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxODcyNzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTQzOTcsNiArNDM5NywxMCBAQAogCQlBOEVBODAwRTBBMTk1MTZFMDBBOEVGNUYgLyog
TWVkaWFMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYgLyogTWVkaWFMaXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThGQTZFNUQwRTRDRkRFRDAwRDVD
RjQ5IC8qIFBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThGQTZFNUUwRTRDRkRFRDAw
RDVDRjQ5IC8qIFBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBhdHRlcm4uY3BwICovOyB9
OworCQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTkxQzlGQkMxQjY1
ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmNwcCAqLzsgfTsKKwkJQTkxQzlGQkYx
QjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZCRDFCNjU4NkRFMDBBRkZENTQgLyog
QWNjZXNzaWJpbGl0eVRyZWUuaCAqLzsgfTsKKwkJQTkxQzlGQzIxQjY1OUE2NzAwQUZGRDU0IC8q
IEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0
eVRyZWVJdGVtLmNwcCAqLzsgfTsKKwkJQTkxQzlGQzMxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vz
c2liaWxpdHlUcmVlSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRl
bS5oICovOyB9OwogCQlBOUM2RTRFMzBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTlDNkU0RTEw
RDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmNwcCAqLzsgfTsKIAkJQTlDNkU0RTQwRDc0
NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBOUM2RTRFMjBENzQ1RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5
cGUuaCAqLzsgfTsKIAkJQTlDNkU0RTcwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJy
YXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTlD
NkU0RTUwRDc0NUUxODAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlQXJyYXkuY3BwICovOyB9OwpAQCAt
MTE3OTIsNiArMTE3OTYsMTAgQEAKIAkJQThFQTgwMDYwQTE5NTE2RTAwQThFRjVGIC8qIE1lZGlh
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4RkE2RTVCMEU0Q0ZERUQwMEQ1Q0Y0OSAvKiBQ
YXR0ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhdHRlcm4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThGQTZFNUMwRTRDRkRFRDAwRDVDRjQ5IC8qIFBh
dHRlcm4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0dGVybi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE5MUM5RkJDMUI2NTg2REUwMEFGRkQ1
NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE5MUM5RkJEMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VHJlZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNz
aWJpbGl0eVRyZWVJdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE5MUM5RkMxMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QzZFNEUxMEQ3NDVFMDUwMDY0NDJFOSAvKiBE
T01NaW1lVHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
TWltZVR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOUM2RTRFMjBENzQ1
RTA1MDA2NDQyRTkgLyogRE9NTWltZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTU1pbWVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE5QzZF
NEU1MEQ3NDVFMTgwMDY0NDJFOSAvKiBET01NaW1lVHlwZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01NaW1lVHlwZUFycmF5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzgwLDYgKzE1Nzg4LDEwIEBACiAJCQkJMjlBODEyMUQw
RkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaCAqLywKIAkJCQky
OTgxQ0FBMTEzMTgyMkVDMDBEMTJGMkEgLyogQWNjZXNzaWJpbGl0eUxpc3QuY3BwICovLAogCQkJ
CTI5QTgxMjBFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5oICovLAorCQkJ
CUE5MUM5RkJDMUI2NTg2REUwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5VHJlZS5jcHAgKi8sCisJ
CQkJQTkxQzlGQkQxQjY1ODZERTAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlLmggKi8sCisJ
CQkJQTkxQzlGQzAxQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRlbS5jcHAg
Ki8sCisJCQkJQTkxQzlGQzExQjY1OUE2NzAwQUZGRDU0IC8qIEFjY2Vzc2liaWxpdHlUcmVlSXRl
bS5oICovLAogCQkJCTI5ODFDQUEyMTMxODIyRUMwMEQxMkYyQSAvKiBBY2Nlc3NpYmlsaXR5TGlz
dEJveC5jcHAgKi8sCiAJCQkJMjlBODEyMjUwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxp
dHlMaXN0Qm94LmggKi8sCiAJCQkJMjk4MUNBQTMxMzE4MjJFQzAwRDEyRjJBIC8qIEFjY2Vzc2li
aWxpdHlMaXN0Qm94T3B0aW9uLmNwcCAqLywKQEAgLTI2ODUzLDYgKzI2ODY1LDcgQEAKIAkJCQlC
MjIyNzlDODBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVCbGVuZEVsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUIyMjI3OUNCMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5Q0UwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlBOTFDOUZC
RjFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3OUQxMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTE5MjEzMjc1MTFDMEU2QkIwMDQ1NjIzOCAvKiBTVkdGRUNvbnZv
bHZlTWF0cml4RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RDQwRDAwQkYyMjAw
NzFCNzgyIC8qIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yNzM1NSw2ICsyNzM2OCw3IEBACiAJCQkJQjEwQjY5ODAxNDBDMTc0MDAwQkMxQzI2IC8qIFdl
YlZUVFRva2VuLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMTBCNjk4MjE0MEMxNzQwMDBCQzFDMjYg
LyogV2ViVlRUVG9rZW5pemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDgyMDMxMDEzOTVBQ0U3
MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlBOTFD
OUZDMzFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNTVCM0RFMDEyNTFGMTJEMDAzRUYyNjkgLyogV2Vla0lucHV0VHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzRUM0NEEyMTg4RjRCQjgwMDY2MURGMSAvKiBXaGVlbEV2
ZW50RGVsdGFUcmFja2VyLmggaW4gSGVhZGVycyAqLywKQEAgLTI4OTQ2LDYgKzI4OTYwLDcgQEAK
IAkJCQkyRUNGN0FEQzEwMTYyQjM4MDA0MjdERTcgLyogSlNFcnJvckV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUYzRDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEU4Mzc4NDA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOTFDOUZCRTFCNjU4NkRFMDBBRkZENTQgLyogQWNj
ZXNzaWJpbGl0eVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRkFGNEUwQzMxN0U2OTAw
RkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MEQ5QkYw
RDJBMjY5QTAwQjk5MThGIC8qIEpTRXZlbnRFeGNlcHRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTNCNzBENjkwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRXZlbnRMaXN0ZW5lci5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTMwMDYyLDYgKzMwMDc3LDcgQEAKIAkJCQkwRkU3MTQwNTE0MjE3MEI4MDBE
QjMzQkEgLyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVEOTI1
QjY3MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxCZWhhdmlvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQUE4NEYwNDE0M0JBN0JEMDA1MUQxNTMgLyogU2Nyb2xsQ29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLAorCQkJCUE5MUM5RkMyMUI2NTlBNjcwMEFGRkQ1NCAvKiBBY2Nlc3NpYmlsaXR5
VHJlZUl0ZW0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2MDVBRUMxNUY5NDg0ODAwNERGMEMw
IC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjYyRUU3
MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkM0RTQwRTE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JJ
T1MubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gMTg3Mjc4KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUs
NiArNTUsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbi5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5oIgogI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlLmgiCisjaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKQEAgLTI5MSw2
ICsyOTMsMTIgQEAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGVGcgogICAg
IGlmIChub2RlSGFzUm9sZShub2RlLCAiZ3JpZGNlbGwiKSB8fCBub2RlSGFzUm9sZShub2RlLCAi
Y2VsbCIpIHx8IG5vZGVIYXNSb2xlKG5vZGUsICJjb2x1bW5oZWFkZXIiKSB8fCBub2RlSGFzUm9s
ZShub2RlLCAicm93aGVhZGVyIikpCiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogCisgICAgLy8gYXJpYSB0cmVlCisgICAgaWYgKG5v
ZGVIYXNSb2xlKG5vZGUsICJ0cmVlIikpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJl
ZTo6Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpZiAobm9kZUhhc1JvbGUobm9kZSwgInRyZWVpdGVt
IikpCisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW06OmNyZWF0ZShyZW5kZXJl
cik7CisKICNpZiBFTkFCTEUoVklERU8pCiAgICAgLy8gbWVkaWEgY29udHJvbHMKICAgICBpZiAo
bm9kZSAmJiBub2RlLT5pc01lZGlhQ29udHJvbEVsZW1lbnQoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lv
biAxODcyNzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNzcyLDYgKzc3Miw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQo
QWNjZXNzaWJpbGl0eU9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiwgdW5zaWduZWQpIHsgfQorCisgICAgdmlydHVhbCBib29sIHNo
b3VsZElnbm9yZUF0dHJpYnV0ZVJvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdmlydHVhbCBib29sIGhhc0NoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXZlQ2hp
bGRyZW47IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTg3Mjc4KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ5Nyw3ICsyNDk3LDkgQEAgQWNjZXNzaWJpbGl0eVJvbGUg
QWNjZXNzaWJpbGl0eVJlbmRlck9iagogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0
dXJuIFVua25vd25Sb2xlOwogCi0gICAgaWYgKChtX2FyaWFSb2xlID0gZGV0ZXJtaW5lQXJpYVJv
bGVBdHRyaWJ1dGUoKSkgIT0gVW5rbm93blJvbGUpCisgICAgLy8gU29tZXRpbWVzIHdlIG5lZWQg
dG8gaWdub3JlIHRoZSBhdHRyaWJ1dGUgcm9sZS4gTGlrZSBpZiBhIHRyZWUgaXMgbWFsZm9ybWVk
LAorICAgIC8vIHdlIHdhbnQgdG8gaWdub3JlIHRoZSB0cmVlaXRlbSdzIGF0dHJpYnV0ZSByb2xl
LgorICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9
IFVua25vd25Sb2xlICYmICFzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkpCiAgICAgICAgIHJl
dHVybiBtX2FyaWFSb2xlOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2Rl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUcmVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUcmVlLmgiCisKKyNpbmNsdWRlICJB
WE9iamVjdENhY2hlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgiCisjaW5j
bHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorCisjaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEhUTUxO
YW1lczsKKyAgICAKK0FjY2Vzc2liaWxpdHlUcmVlOjpBY2Nlc3NpYmlsaXR5VHJlZShSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKQorICAgIDogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJl
cikKK3sKK30KKyAgICAKK0FjY2Vzc2liaWxpdHlUcmVlOjp+QWNjZXNzaWJpbGl0eVRyZWUoKQor
eworfQorICAgIAorUmVmPEFjY2Vzc2liaWxpdHlUcmVlPiBBY2Nlc3NpYmlsaXR5VHJlZTo6Y3Jl
YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QWNjZXNzaWJpbGl0eVRyZWUocmVuZGVyZXIpKTsKK30KKyAgICAKK2Jvb2wgQWNjZXNzaWJpbGl0
eVRyZWU6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gYWNjZXNzaWJpbGl0eUlzSWdub3JlZEJ5RGVmYXVsdCgpOworfQorCitBY2Nlc3NpYmlsaXR5
Um9sZSBBY2Nlc3NpYmlsaXR5VHJlZTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQorewor
ICAgIGlmICgobV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCkpICE9IFRy
ZWVSb2xlKQorICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0ZXJt
aW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKKworICAgIHJldHVybiBpc1RyZWVWYWxpZCgpID8gVHJl
ZVJvbGUgOiBHcm91cFJvbGU7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVRyZWU6OmlzVHJlZVZh
bGlkKCkgY29uc3QKK3sKKyAgICAvLyBBIHZhbGlkIHRyZWUgY2FuIG9ubHkgaGF2ZSB0cmVlaXRl
bSBvciBncm91cCBvZiB0cmVlaXRlbXMgYXMgYSBjaGlsZAorICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL3dhaS1hcmlhL3JvbGVzI3RyZWUKKworICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2Rl
KCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgRGVx
dWU8Tm9kZSo+IHF1ZXVlOworICAgIGZvciAoYXV0byBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIHF1ZXVlLmFw
cGVuZChjaGlsZCk7CisKKyAgICB3aGlsZSAoIXF1ZXVlLmlzRW1wdHkoKSkgeworICAgICAgICBh
dXRvIGNoaWxkID0gcXVldWUudGFrZUZpcnN0KCk7CisKKyAgICAgICAgaWYgKCFpczxFbGVtZW50
PigqY2hpbGQpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChub2RlSGFzUm9s
ZShjaGlsZCwgInRyZWVpdGVtIikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KCFub2RlSGFzUm9sZShjaGlsZCwgImdyb3VwIikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgZm9yIChhdXRvIGdyb3VwQ2hpbGQgPSBjaGlsZC0+Zmlyc3RDaGlsZCgpOyBn
cm91cENoaWxkOyBncm91cENoaWxkID0gZ3JvdXBDaGlsZC0+bmV4dFNpYmxpbmcoKSkKKyAgICAg
ICAgICAgIHF1ZXVlLmFwcGVuZChncm91cENoaWxkKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eVRyZWVfaAorI2RlZmluZSBBY2Nlc3Np
YmlsaXR5VHJlZV9oCisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIEFjY2Vzc2liaWxpdHlUcmVlIGZpbmFs
IDogcHVibGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgeworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8QWNjZXNzaWJpbGl0eVRyZWU+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0
dWFsIH5BY2Nlc3NpYmlsaXR5VHJlZSgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEFjY2Vz
c2liaWxpdHlUcmVlKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNj
ZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzVHJlZVZhbGlkKCkgY29uc3Q7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0FDQ0VTU0lCSUxJVFkoQWNjZXNzaWJpbGl0eVRy
ZWUsIGlzVHJlZSgpKQorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRyZWVfaApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJ
dGVtLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaCIKKworI2luY2x1ZGUg
IkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKyAgICAKK0FjY2Vzc2li
aWxpdHlUcmVlSXRlbTo6QWNjZXNzaWJpbGl0eVRyZWVJdGVtKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCisgICAgOiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KHJlbmRlcmVyKQoreworfQorICAg
IAorQWNjZXNzaWJpbGl0eVRyZWVJdGVtOjp+QWNjZXNzaWJpbGl0eVRyZWVJdGVtKCkKK3sKK30K
KyAgICAKK1JlZjxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0+IEFjY2Vzc2liaWxpdHlUcmVlSXRlbTo6
Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQWNjZXNzaWJpbGl0eVRyZWVJdGVtKHJlbmRlcmVyKSk7Cit9CisKK0FjY2Vzc2liaWxpdHlS
b2xlIEFjY2Vzc2liaWxpdHlUcmVlSXRlbTo6ZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKQor
eworICAgIAorICAgIC8vIFdhbGsgdGhlIHBhcmVudCBjaGFpbiBsb29raW5nIGZvciBhIHBhcmVu
dCB0aGF0IGlzIGEgdHJlZS4gQSB0cmVlaXRlbSBpcworICAgIC8vIG9ubHkgY29uc2lkZXJlZCB2
YWxpZCBpZiBpdCBpcyBpbiBhIHRyZWUuCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
ID0gbnVsbHB0cjsKKyAgICBmb3IgKHBhcmVudCA9IHBhcmVudE9iamVjdCgpOyBwYXJlbnQgJiYg
IXBhcmVudC0+aXNUcmVlKCk7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsgfQor
ICAgIG1faXNUcmVlSXRlbVZhbGlkID0gcGFyZW50OworCisgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Cit9CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVtLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5VHJlZUl0ZW1faAorI2RlZmluZSBB
Y2Nlc3NpYmlsaXR5VHJlZUl0ZW1faAorCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBBY2Nlc3NpYmlsaXR5
VHJlZUl0ZW0gZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VHJlZUl0ZW0+IGNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKKyAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0oKTsKKworICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRJZ25vcmVBdHRyaWJ1dGVSb2xlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIW1faXNUcmVlSXRlbVZhbGlkOyB9CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKKyAgICBib29s
IG1faXNUcmVlSXRlbVZhbGlkOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
U1BFQ0lBTElaRV9UWVBFX1RSQUlUU19BQ0NFU1NJQklMSVRZKEFjY2Vzc2liaWxpdHlUcmVlSXRl
bSwgaXNUcmVlSXRlbSgpKQorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVRyZWVJdGVtX2gKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4NzU2OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE1LTA3LTI5ICBOYW4gV2FuZyAgPG5fd2FuZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQVg6IFZvaWNlT3ZlciB1bmFibGUgdG8gYWNjZXNzIGNvbnRl
bnQgaW4gbWFsZm9ybWVkIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDcyOTUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE0ODYyODkyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9hcmlhLW1hcHBpbmdzLmh0bWw6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS90cmVl
aXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLmh0bWw6IEFkZGVkLgor
CiAyMDE1LTA3LTI5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIHRoZSBzcGFubmVyIHBsYWNlaG9sZGVyIGZyb20gbV9zcGFubmVyTWFwIHdoZW4gdGhl
IHBsYWNlaG9sZGVyIG9iamVjdApJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlh
LW1hcHBpbmdzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLW1hcHBpbmdzLmh0bWwJKHJldmlzaW9uIDE4NzI3OCkKKysrIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvYXJpYS1tYXBwaW5ncy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiw4ICsxMiw4
IEBACiA8ZGl2IGlkPSJkb2N1bWVudCIgcm9sZT0iZG9jdW1lbnQiPmRvY3VtZW50IHJvbGU8L2Rp
dj4KIDxkaXYgaWQ9InN0YXR1cyIgcm9sZT0ic3RhdHVzIj5zdGF0dXMgcm9sZTwvZGl2PgogPGRp
diBpZD0idG9vbHRpcCIgcm9sZT0idG9vbHRpcCI+dG9vbHRpcCByb2xlPC9kaXY+Ci08ZGl2IGlk
PSJ0cmVlIiByb2xlPSJ0cmVlIj50cmVlIHJvbGU8L2Rpdj4KLTxkaXYgaWQ9InRyZWVpdGVtIiBy
b2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW0gcm9sZTwvZGl2PgorPGRpdiBpZD0idHJlZSIgcm9sZT0i
dHJlZSI+PGRpdiByb2xlPSJ0cmVlaXRlbSI+dHJlZSByb2xlPC9kaXY+PC9kaXY+Cis8ZGl2IHJv
bGU9InRyZWUiPjxkaXYgaWQ9InRyZWVpdGVtIiByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW0gcm9s
ZTwvZGl2PjwvZGl2PgogPGJyPgogPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+CiA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdHJlZWl0ZW0t
Y2hpbGQtZXhwb3NlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90cmVlaXRlbS1jaGlsZC1leHBv
c2VkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAgVGhpcyB0ZXN0
cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5zIGFuIGVsZQogT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgogCiAKLVBBU1MgdHJlZS5jaGlsZHJlbkNvdW50IGlzIDIKK1BBU1MgdHJlZS5jaGlsZHJlbkNv
dW50IGlzIDMKIFBBU1MgaW5wdXRGaWVsZC5pc1ZhbGlkIGlzIHRydWUKIFBBU1MgaW5wdXRGaWVs
ZDMuaXNWYWxpZCBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4cG9zZWQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RyZWVpdGVtLWNoaWxkLWV4
cG9zZWQuaHRtbAkocmV2aXNpb24gMTg3Mjc4KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS90cmVlaXRlbS1jaGlsZC1leHBvc2VkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2
LDkgQEAKICAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBpZiBhIHRyZWVpdGVtIGNvbnRhaW5z
IGFuIGVsZW1lbnQgb3RoZXIgdGhhbiBzdGF0aWMgdGV4dCwgaXQgc2hvdWxkIGJlIGV4cG9zZWQi
KTsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAJLy8g
dHJlZSBzaG91bGQgb25seSBoYXZlIDIgY2hpbGQsIHNpbmNlIG9ubHkgdHJlZWl0ZW0gb3Igc3Rh
dGljIHRleHQgY2FuIGJlIGEgdHJlZSdzIGNoaWxkCisgICAgCS8vIHRyZWUgc2hvdWxkIG9ubHkg
aGF2ZSAzIGNoaWxkLCBzaW5jZSBtYWxmb3JtZWQgdHJlZSBzaG91bGQgYWxzbyBiZSBhY2Nlc3Np
YmxlLgogICAgICAgICB2YXIgdHJlZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidHJlZSIpOwotICAgICAgICBzaG91bGRCZSgidHJlZS5jaGlsZHJlbkNv
dW50IiwgIjIiKTsKKyAgICAgICAgc2hvdWxkQmUoInRyZWUuY2hpbGRyZW5Db3VudCIsICIzIik7
CiAgICAgICAgIAogICAgICAgICAvLyBpbnB1dCBmaWxlZCBpbiB0cmVlaXRlbTEgc2hvdWxkIGJl
IGV4cG9zZWQKICAgICAgICAgdmFyIGlucHV0RmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlucHV0MSIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1l
ZC10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9hY2Nlc3NpYmlsaXR5L21hbGZvcm1lZC10cmVlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDI2IEBACit0ZXh0Cit0cmVlaXRlbQorRW50cnkgQQorCisKK3RleHQK
KwordGV4dAorVGhpcyB0ZXN0cyB0aGF0IGEgbWFsZm9ybWVkIHRyZWUgaXMgYWNjZXNzaWJsZS4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdHJlZS5yb2xlIGlzICdBWFJv
bGU6IEFYT3V0bGluZScKK1BBU1MgdHJlZTEucm9sZSBpcyAnQVhSb2xlOiBBWEdyb3VwJworUEFT
UyB0cmVlMi5yb2xlIGlzICdBWFJvbGU6IEFYR3JvdXAnCitQQVNTIGl0ZW1BICE9IG51bGwgaXMg
dHJ1ZQorUEFTUyBpdGVtQiAhPSBudWxsIGlzIHRydWUKK1BBU1MgaXRlbUMgIT0gbnVsbCBpcyB0
cnVlCitQQVNTIGl0ZW1EICE9IG51bGwgaXMgdHJ1ZQorUEFTUyBpdGVtRSAhPSBudWxsIGlzIHRy
dWUKK1BBU1MgaXRlbUYgIT0gbnVsbCBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvbWFsZm9ybWVkLXRyZWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9tYWxmb3JtZWQtdHJlZS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvbWFsZm9y
bWVkLXRyZWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACis8IURPQ1RZUEUg
SFRNTD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4gICAKKworPGRpdiByb2xlPSJ0cmVlIiBpZD0iZ29vZHRy
ZWUiPgorPGRpdiByb2xlPSJ0cmVlaXRlbSI+dGV4dDwvZGl2PgorPGRpdiByb2xlPSJncm91cCI+
PGRpdiByb2xlPSJncm91cCI+PGRpdiByb2xlPSJ0cmVlaXRlbSI+dHJlZWl0ZW08L2Rpdj48L2Rp
dj48L2Rpdj4KKzwvZGl2PgorICAgICAgICAKKzx1bCBpZD0ibWFsZm9ybWVkVHJlZTEiIHJvbGU9
InRyZWUiPgorPGxpIHJvbGU9InRyZWVpdGVtIj4KKzxzcGFuPjxhIGlkPSJJVEVNX0EiIGhyZWY9
Imh0dHA6Ly9hcHBsZS5jb20iPkVudHJ5IEE8L2E+PC9zcGFuPgorPC9saT4KKzxsaSBpZD0ibGlz
dDEiPjxpbnB1dCBpZD0iSVRFTV9CIj48L2xpPgorPC91bD4KKworPHVsIGlkPSJtYWxmb3JtZWRU
cmVlMiIgcm9sZT0idHJlZSI+Cis8bGk+PGlucHV0IGlkPSJJVEVNX0MiPjwvbGk+Cis8bGkgaWQ9
IklURU1fRCI+dGV4dDwvbGk+Cis8L3VsPgorCis8dWwgaWQ9Im1hbGZvcm1lZFRyZWUzIj4KKzxs
aSByb2xlPSJ0cmVlaXRlbSI+PGlucHV0IGlkPSJJVEVNX0UiPjwvbGk+Cis8bGkgcm9sZT0idHJl
ZWl0ZW0iIGlkPSJJVEVNX0YiPnRleHQ8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdGhhdCBhIG1hbGZvcm1lZCB0cmVlIGlzIGFjY2Vzc2libGUuIikKKwor
aWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgdmFyIHRyZWUgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImdvb2R0cmVlIik7
CisgICAgc2hvdWxkQmUoInRyZWUucm9sZSIsICInQVhSb2xlOiBBWE91dGxpbmUnIik7CisgICAg
dmFyIHRyZWUxID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJtYWxmb3JtZWRUcmVlMSIpOworICAgIHNob3VsZEJlKCJ0cmVlMS5yb2xlIiwgIidBWFJvbGU6
IEFYR3JvdXAnIik7CisgICAgdmFyIHRyZWUyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJtYWxmb3JtZWRUcmVlMiIpOworICAgIHNob3VsZEJlKCJ0cmVl
Mi5yb2xlIiwgIidBWFJvbGU6IEFYR3JvdXAnIik7CisKKyAgICB2YXIgaXRlbUEgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fQSIpOworICAgIHZh
ciBpdGVtQiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
SVRFTV9CIik7CisgICAgdmFyIGl0ZW1DID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJJVEVNX0MiKTsKKyAgICB2YXIgaXRlbUQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoIklURU1fRCIpOworICAgIHZhciBpdGVt
RSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiSVRFTV9F
Iik7CisgICAgdmFyIGl0ZW1GID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJJVEVNX0YiKTsKKyAgICAKKyAgICBzaG91bGRCZVRydWUoIml0ZW1BICE9IG51
bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1CICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRy
dWUoIml0ZW1DICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0ZW1EICE9IG51bGwiKTsK
KyAgICBzaG91bGRCZVRydWUoIml0ZW1FICE9IG51bGwiKTsKKyAgICBzaG91bGRCZVRydWUoIml0
ZW1GICE9IG51bGwiKTsKK30KKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>