<?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>129571</bug_id>
          
          <creation_ts>2014-03-01 22:57:17 -0800</creation_ts>
          <short_desc>[GTK] Simplify the GObject DOM bindings API break check into one step</short_desc>
          <delta_ts>2014-03-04 10:38:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>126211</blocked>
    
    <blocked>129637</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>berto</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>986060</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-01 22:57:17 -0800</bug_when>
    <thetext>Right now the API break check is a couple scripts with somewhat tricky integration into the two builds. We should simplify the check into one script and also move it to &apos;make check.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986068</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-02 06:43:37 -0800</bug_when>
    <thetext>We can&apos;t make make check fail for API incompatible changes because of bug #121481. I *always* get incompatible changes when running make distcheck, because the symbols file used as reference is only valid for the compile options used by build-webkit. However, we want to always run the script for every build, to early detect API changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986069</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-02 06:46:13 -0800</bug_when>
    <thetext>hmm, what other scripts do you mean? there&apos;s only one, gobject-run-api-break-test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986097</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-02 08:48:15 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; We can&apos;t make make check fail for API incompatible changes because of bug #121481. I *always* get incompatible changes when running make distcheck, because the symbols file used as reference is only valid for the compile options used by build-webkit. However, we want to always run the script for every build, to early detect API changes.

If we can&apos;t run the script during &quot;check&quot; why can we run it for every build? If it runs for every build, won&apos;t it also run when you do &quot;make distcheck?&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986125</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-02 10:31:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #1)
&gt; &gt; We can&apos;t make make check fail for API incompatible changes because of bug #121481. I *always* get incompatible changes when running make distcheck, because the symbols file used as reference is only valid for the compile options used by build-webkit. However, we want to always run the script for every build, to early detect API changes.
&gt; 
&gt; If we can&apos;t run the script during &quot;check&quot; why can we run it for every build? If it runs for every build, won&apos;t it also run when you do &quot;make distcheck?&quot;

I haven&apos;t said we can&apos;t run it, what I&apos;ve said is that we can&apos;t make make check fail. And I think we don&apos;t need to move it to make check, but simply run it always.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986132</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-02 11:08:57 -0800</bug_when>
    <thetext>(In reply to comment #4)
 
&gt; I haven&apos;t said we can&apos;t run it, what I&apos;ve said is that we can&apos;t make make check fail. And I think we don&apos;t need to move it to make check, but simply run it always.

Yes, the script doesn&apos;t return a failing error code ever, right now because of the bug you linked to. The reason I suggest moving it to make check is that after the simplification, it doesn&apos;t produce any output file (the current output file is unused and is used more like a stamp). Parts of the build that are tests (ie is the API broken?) and don&apos;t produce any output are more like tests. Since the EWS runs &quot;make check&quot; already it seemed okay. If you like though, I can make it part of &apos;build-webkit&apos; instead. I don&apos;t think it makes sense to keep it as part of the default target though, because it doesn&apos;t produce any output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986279</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-02 23:47:12 -0800</bug_when>
    <thetext>I see your point and what you say makes a lot of sense in theory, but in practice things are a bit different. First, are your sure EWS run tests? since the script can&apos;t fail because of bug #121481, the EWS box will be green in any case and nobody will notice it. The same happens for the bots running the tests, although in that case we could make the script fail. So, if we add a new step of the bots that simply run this script and we make it fail, I would be happy to remove it from the normal target. Meanwhile it&apos;s the only way I have to early detect api breaks in DOM bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986612</commentid>
    <comment_count>7</comment_count>
      <attachid>225721</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-03 17:19:46 -0800</bug_when>
    <thetext>Created attachment 225721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986697</commentid>
    <comment_count>8</comment_count>
      <attachid>225721</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-04 00:04:36 -0800</bug_when>
    <thetext>Comment on attachment 225721
Patch

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

I think this breaks distcheck. I think the patch could be split, one patch to move all the logic to a single script (like it was originally) and another one to move it to make check. I really want to make sure I&apos;m not going to miss the api breaks.

&gt; Source/WebCore/bindings/gobject/GNUmakefile.am:-503
&gt; -DerivedSources/webkitdom/webkitdom.symbols: $(gdom_symbol_files) $(WebCore)/bindings/gobject/webkitdom.symbols $(WebCore)/bindings/scripts/gobject-run-api-break-test $(srcdir)/Tools/gtk/check-gdom-symbols
&gt; -	$(AM_V_GEN)$(srcdir)/Tools/gtk/check-gdom-symbols
&gt; -

I didn&apos;t even know this script existed. Anyway, you should also remove the webkitdom.symbols file from EXTRA_DIST

&gt; Source/WebCore/bindings/scripts/gobject-run-api-break-test:-1
&gt; -#!/usr/bin/env python

You should also remove the script from EXTRA_DIST in Source/WebCore/GNUmakefile.am

&gt; Tools/ChangeLog:9
&gt; +        * gtk/check-for-webkitdom-api-breaks: Added. A combination of the two removed scripts.

Why the rename? what was wrong with gobject-run-api-break-test? I really don&apos;t mind the name, I&apos;m just curious.

&gt; Tools/GNUmakefile.am:270
&gt; +	$(top_srcdir)/Tools/gtk/check-for-webkitdom-api-breaks

You should add it to EXTRA_DIST too. Are you sure this is run by the bots? I&apos;m afraid I&apos;m going to miss all api breaks from now on. Would it be possible to add a specific step in the bots for this particular test, like the other tests?

&gt; Tools/gtk/check-for-webkitdom-api-breaks:44
&gt; +    missing_api = expected_api.difference(built_api)
&gt; +    new_api = built_api.difference(expected_api)

I love this approach of using sets and get the difference, it&apos;s much better than having to parse diffs :-)

&gt; Tools/gtk/check-for-webkitdom-api-breaks:52
&gt; +        sys.stderr.write(&quot;New API detected in GObject DOM bindings\n&quot;)
&gt; +        sys.stderr.write(&quot;    %s\n&quot; % &quot;    &quot;.join(new_api))

This is not an error, we used to write this to stdout instead.

&gt; Tools/gtk/webkitdom.py:1
&gt; +#!/usr/bin/env python

This new file should be added to EXTRA_DIST as well

&gt; Tools/gtk/webkitdom.py:46
&gt; +        if header_name == &quot;webkitdom.h&quot; or header_name == &quot;webkitdomdefines.h&quot;:

if header_name in (&quot;webkitdom.h&quot;, &quot;webkitdomdefines.h&quot;):</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986825</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-04 08:39:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 225721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225721&amp;action=review

&gt; &gt; Source/WebCore/bindings/gobject/GNUmakefile.am:-503
&gt; &gt; -DerivedSources/webkitdom/webkitdom.symbols: $(gdom_symbol_files) $(WebCore)/bindings/gobject/webkitdom.symbols $(WebCore)/bindings/scripts/gobject-run-api-break-test $(srcdir)/Tools/gtk/check-gdom-symbols
&gt; &gt; -	$(AM_V_GEN)$(srcdir)/Tools/gtk/check-gdom-symbols
&gt; &gt; -
&gt; 
&gt; I didn&apos;t even know this script existed. Anyway, you should also remove the webkitdom.symbols file from EXTRA_DIST

The webkitdom.symbols that&apos;s on EXTRA_DIST is the one included in the source tree, which is still in use.

&gt; &gt; Source/WebCore/bindings/scripts/gobject-run-api-break-test:-1
&gt; &gt; -#!/usr/bin/env python
&gt; 
&gt; You should also remove the script from EXTRA_DIST in Source/WebCore/GNUmakefile.am

Nice catch. Done.

&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        * gtk/check-for-webkitdom-api-breaks: Added. A combination of the two removed scripts.
&gt; 
&gt; Why the rename? what was wrong with gobject-run-api-break-test? I really don&apos;t mind the name, I&apos;m just curious.

Typically scripts in WebKit are named so that they parse as English sentences. An example here is &quot;run-webkit-tests&quot; and &quot;generate-gtkdoc.&quot; Having the &quot;gobject&quot; before &quot;check&quot; means that you cannot read it like a command sentence. I think the scripts in the bindings directory only have that so they stick out from the non-GObject ones. I&apos;m not sure I agree it&apos;s a great pattern anyhow. :)

&gt; &gt; Tools/GNUmakefile.am:270
&gt; &gt; +	$(top_srcdir)/Tools/gtk/check-for-webkitdom-api-breaks
&gt; 
&gt; You should add it to EXTRA_DIST too. Are you sure this is run by the bots? I&apos;m afraid I&apos;m going to miss all api breaks from now on. Would it be possible to add a specific step in the bots for this particular test, like the other tests?

Nice catch. Added. I have opened a bug and attached a buildbot patch already. See: https://bugs.webkit.org/show_bug.cgi?id=129637

&gt; 
&gt; &gt; Tools/gtk/check-for-webkitdom-api-breaks:44
&gt; &gt; +    missing_api = expected_api.difference(built_api)
&gt; &gt; +    new_api = built_api.difference(expected_api)
&gt; 
&gt; I love this approach of using sets and get the difference, it&apos;s much better than having to parse diffs :-)

Thanks. :)


&gt; &gt; Tools/gtk/check-for-webkitdom-api-breaks:52
&gt; &gt; +        sys.stderr.write(&quot;New API detected in GObject DOM bindings\n&quot;)
&gt; &gt; +        sys.stderr.write(&quot;    %s\n&quot; % &quot;    &quot;.join(new_api))
&gt; 
&gt; This is not an error, we used to write this to stdout instead.
&gt; 
&gt; &gt; Tools/gtk/webkitdom.py:1
&gt; &gt; +#!/usr/bin/env python
&gt; 
&gt; This new file should be added to EXTRA_DIST as well

Done.

&gt; &gt; Tools/gtk/webkitdom.py:46
&gt; &gt; +        if header_name == &quot;webkitdom.h&quot; or header_name == &quot;webkitdomdefines.h&quot;:
&gt; 
&gt; if header_name in (&quot;webkitdom.h&quot;, &quot;webkitdomdefines.h&quot;):

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986826</commentid>
    <comment_count>10</comment_count>
      <attachid>225781</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-04 08:39:47 -0800</bug_when>
    <thetext>Created attachment 225781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986843</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-04 09:31:40 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 225721 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225721&amp;action=review
&gt; 
&gt; &gt; &gt; Source/WebCore/bindings/gobject/GNUmakefile.am:-503
&gt; &gt; &gt; -DerivedSources/webkitdom/webkitdom.symbols: $(gdom_symbol_files) $(WebCore)/bindings/gobject/webkitdom.symbols $(WebCore)/bindings/scripts/gobject-run-api-break-test $(srcdir)/Tools/gtk/check-gdom-symbols
&gt; &gt; &gt; -	$(AM_V_GEN)$(srcdir)/Tools/gtk/check-gdom-symbols
&gt; &gt; &gt; -
&gt; &gt; 
&gt; &gt; I didn&apos;t even know this script existed. Anyway, you should also remove the webkitdom.symbols file from EXTRA_DIST
&gt; 
&gt; The webkitdom.symbols that&apos;s on EXTRA_DIST is the one included in the source tree, which is still in use.
&gt;

Oh, you are right, this one is autogenerated and not disted, of course.

&gt; &gt; &gt; Tools/ChangeLog:9
&gt; &gt; &gt; +        * gtk/check-for-webkitdom-api-breaks: Added. A combination of the two removed scripts.
&gt; &gt; 
&gt; &gt; Why the rename? what was wrong with gobject-run-api-break-test? I really don&apos;t mind the name, I&apos;m just curious.
&gt; 
&gt; Typically scripts in WebKit are named so that they parse as English sentences. An example here is &quot;run-webkit-tests&quot; and &quot;generate-gtkdoc.&quot; Having the &quot;gobject&quot; before &quot;check&quot; means that you cannot read it like a command sentence. I think the scripts in the bindings directory only have that so they stick out from the non-GObject ones. I&apos;m not sure I agree it&apos;s a great pattern anyhow. :)

Right, the gobject prefix was because the script was in bindings dir. So, I think run-gobject-webkitdom-api-break-test would be more consistent with other wk scripts.
 
&gt; &gt; &gt; Tools/GNUmakefile.am:270
&gt; &gt; &gt; +	$(top_srcdir)/Tools/gtk/check-for-webkitdom-api-breaks
&gt; &gt; 
&gt; &gt; You should add it to EXTRA_DIST too. Are you sure this is run by the bots? I&apos;m afraid I&apos;m going to miss all api breaks from now on. Would it be possible to add a specific step in the bots for this particular test, like the other tests?
&gt; 
&gt; Nice catch. Added. I have opened a bug and attached a buildbot patch already. See: https://bugs.webkit.org/show_bug.cgi?id=129637

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986846</commentid>
    <comment_count>12</comment_count>
      <attachid>225781</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-03-04 09:43:56 -0800</bug_when>
    <thetext>Comment on attachment 225781
Patch

Oooook, let&apos;s see how this works :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986866</commentid>
    <comment_count>13</comment_count>
      <attachid>225781</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-04 10:38:12 -0800</bug_when>
    <thetext>Comment on attachment 225781
Patch

Clearing flags on attachment: 225781

Committed r165060: &lt;http://trac.webkit.org/changeset/165060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>986867</commentid>
    <comment_count>14</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-03-04 10:38:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225721</attachid>
            <date>2014-03-03 17:19:46 -0800</date>
            <delta_ts>2014-03-04 08:39:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129571-20140303171946.patch</filename>
            <type>text/plain</type>
            <size>17239</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVmNGFjMjRhZWFlMjQ4
YjQ3ZTEyYWYyNjc3NjAxNGZjYzUzOTFkNC4uNzk5ODQ2NmZhNzc0MTY0NTRiZTFkYmY5NjlkMGU3
MmE5MTgwZjQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTAzLTAzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBTaW1w
bGlmeSB0aGUgR09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGNoZWNrIGludG8gb25lIHN0
ZXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogV2Ugbm8gbG9uZ2VyIGdlbmVyYXRlIHRoZSB3
ZWJraXRkb20uc3ltYm9scyBmaWxlIGluIHRoZQorICAgICAgICBEZXJpdmVkU291cmNlcyBkaXJl
Y3RvcnkuIEFsbCB0aGUgbG9naWMgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGluIHRoZSBzY3JpcHQg
bm93LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRl
c3Q6IFJlbW92ZWQuCisKIDIwMTQtMDItMTcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIGRvZXMgbm90
IHNraXAgb3ZlciBTVkcgZm9udHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNTFiMDhmOTRiNGJkMDgxZmU1YWJh
NmUwODljYWRjNTg5M2JlNWQyLi42NGNmNTBmZDc0M2I1MGRkNGUxNWE0MWVkNjJkNTlhOGIyNTEw
ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC00LDcgKzQsNiBAQCBhZGRfc3ViZGlyZWN0b3J5KCR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2d0ay9wbykKIGFkZF9jdXN0b21fdGFyZ2V0KGdpciBBTEwgREVQRU5E
UyAke0dPYmplY3RJbnRyb3NwZWN0aW9uVGFyZ2V0c30pCiAKIHNldChEb2N1bWVudGF0aW9uRGVw
ZW5kZW5jaWVzCi0gICAgZ2VuZXJhdGUtZ2RvbS1zeW1ib2xzLWZpbGUKICAgICAiJHtDTUFLRV9T
T1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGVudmlyb25tZW50LnhtbCIK
ICkKIApAQCAtNTEsNyArNTAsOCBAQCBpZiAoRU5BQkxFX1dFQktJVDIpCiBlbmRpZiAoKQogCiBh
ZGRfY3VzdG9tX3RhcmdldChjaGVjawotICAgIENPTU1BTkQgIiR7VE9PTFNfRElSfS9TY3JpcHRz
L3J1bi1ndGstdGVzdHMiCisgICAgQ09NTUFORCAke1RPT0xTX0RJUn0vU2NyaXB0cy9ydW4tZ3Rr
LXRlc3RzCisgICAgQ09NTUFORCAke1RPT0xTX0RJUn0vZ3RrL2NoZWNrLWZvci13ZWJraXRkb20t
YXBpLWJyZWFrcwogKQogCiBpZiAoRU5BQkxFX1dFQktJVCBBTkQgRU5BQkxFX1dFQktJVDIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCBh
MTc0MTZhYTMyZjhjM2Y5ZTgyN2M4ZDQ2YmRhMzEwZmYwNGZmOGI1Li5jODRmZTE3OTU0MTM1ZjMw
Y2UyZDFlMmYwZjVkZTI5NzJhZjNiYjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvR05VbWFrZWZpbGUuYW0KQEAgLTQ4MCw3ICs0ODAsNiBAQCBEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vd2Via2l0ZG9tLmg6ICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2Jq
ZWN0LWdlbmVyYQogRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbWRlZmluZXMuaDog
JChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5wbCAk
KFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KIAkkKEFNX1ZfR0VOKWVj
aG8gJChnZG9tX2NsYXNzX2xpc3QpIHwgJChQRVJMKSAkPCBkZWZpbmVzID4gJEAKIAotbm9pbnN0
X0RBVEEgKz0gRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL3dlYmtpdGRvbS5zeW1ib2xzCiBnZG9t
X3N5bWJvbF9maWxlcyArPSAkKHBhdHN1YnN0ICUuaCwlLnN5bWJvbHMsICQoZmlsdGVyIERlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET00lLmgsICQod2Via2l0Z3RrX2dkb21fYnVpbHRf
aF9hcGkpKSkKIAogJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01PYmplY3Quc3ltYm9sczogJChXZWJDb3JlKS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TU9iamVjdC5zeW1ib2xzCkBAIC00OTgsOSArNDk3LDYgQEAgJCh0b3BfYnVpbGRkaXIpL0Rlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01EZXByZWNhdGVkLnN5bWJvbHM6ICQoV2ViQ29y
ZSkKIERlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET00lLnN5bWJvbHM6IERlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET00lLmgKIAlAdHJ1ZQogCi1EZXJpdmVkU291cmNlcy93
ZWJraXRkb20vd2Via2l0ZG9tLnN5bWJvbHM6ICQoZ2RvbV9zeW1ib2xfZmlsZXMpICQoV2ViQ29y
ZSkvYmluZGluZ3MvZ29iamVjdC93ZWJraXRkb20uc3ltYm9scyAkKFdlYkNvcmUpL2JpbmRpbmdz
L3NjcmlwdHMvZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRlc3QgJChzcmNkaXIpL1Rvb2xzL2d0ay9j
aGVjay1nZG9tLXN5bWJvbHMKLQkkKEFNX1ZfR0VOKSQoc3JjZGlyKS9Ub29scy9ndGsvY2hlY2st
Z2RvbS1zeW1ib2xzCi0KIEVYVFJBX0RJU1QgKz0gXAogCSQoV2ViQ29yZSkvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01DdXN0b20uc3ltYm9scyBcCiAJJChXZWJDb3JlKS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9scyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtcnVuLWFwaS1icmVhay10ZXN0IGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LXJ1bi1hcGktYnJlYWstdGVzdApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzIwOGU2M2JkMTM1YTM2YjY0MmExYWQzZWY4ZWZj
YzgwN2Q0ZDViNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtcnVuLWFwaS1icmVhay10
ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotIwotIyBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExlc3NlciBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLQotaW1wb3J0IGRpZmZsaWIKLWlt
cG9ydCBvcHRwYXJzZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN5cwotCi1kZWYgY2hlY2tfYXBp
KG9wdGlvbnMsIGZyb21fZmlsZSwgdG9fZmlsZSk6Ci0gICAgZnJvbV9saW5lcyA9IG9wZW4oZnJv
bV9maWxlLCAncicpLnJlYWRsaW5lcygpCi0gICAgZnJvbV9saW5lcy5zb3J0KCkKLSAgICB0b19s
aW5lcyA9IG9wZW4odG9fZmlsZSwgJ3InKS5yZWFkbGluZXMoKQotICAgIHRvX2xpbmVzLnNvcnQo
KQotCi0gICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21fbGluZXMsIHRvX2xpbmVz
KQotCi0gICAgZGlmZl9vdXQgPSAiIgotICAgIGZhaWxlZCA9IEZhbHNlCi0gICAgZm9yIGxpbmUg
aW4gZGlmZjoKLSAgICAgICAgIyBJZ25vcmUgaW5pdGlhbCBsaW5lcyBzaW5jZSB3ZSBkb24ndCB1
c2UgZnJvbS9maWxlIGZpbGVuYW1lcy4KLSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcrKysn
KSBvciBsaW5lLnN0YXJ0c3dpdGgoJy0tLScpOgotICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICBkaWZmX291dCArPSBsaW5lCi0gICAgICAgIGlmIGxpbmVbMF0gPT0gJy0nOgotICAgICAg
ICAgICAgZmFpbGVkID0gVHJ1ZQotCi0gICAgaWYgZGlmZl9vdXQ6Ci0gICAgICAgIGlmIGZhaWxl
ZDoKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkFQSSBpbmNvbXBhdGliaWxpdHkgZGV0
ZWN0ZWQgaW4gR09iamVjdCBET00gYmluZGluZ3NcbiIpCi0gICAgICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKGRpZmZfb3V0KQotICAgICAgICAgICAgIyBUaGlzIHRlc3QgY2FuIGdpdmUgZmFsc2Ug
cG9zaXRpdmVzIGJlY2F1c2UgdGhlIEdPYmplY3QKLSAgICAgICAgICAgICMgRE9NIGJpbmRpbmdz
IEFQSSB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxhdGlvbiBvcHRpb25zLgotICAgICAg
ICAgICAgIyBTbyB0aGlzIHNob3VsZG4ndCBiZSBtYWRlIGZhdGFsIHVudGlsIHdlIGZpZ3VyZSBv
dXQgYSB3YXkgdG8gaGFuZGxlIGl0LgotICAgICAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTQ4MQotICAgICAgICAgICAgcmV0dXJuIDAKLQot
ICAgICAgICBpZiBvcHRpb25zLnJlc2V0X3Jlc3VsdHM6Ci0gICAgICAgICAgICBzeXMuc3Rkb3V0
LndyaXRlKCJSZXNldCByZXN1bHRzOiAlc1xuIiAlIGZyb21fZmlsZSkKLSAgICAgICAgICAgIHNo
dXRpbC5jb3B5ZmlsZSh0b19maWxlLCBmcm9tX2ZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCJBUEkgY29tcGF0aWJsZSBjaGFuZ2VzIGZvdW5kIGluIEdP
YmplY3QgRE9NIGJpbmRpbmdzXG4iKQotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiVG8g
dXBkYXRlIHRoZSBzeW1ib2xzIGZpbGUsIGV4ZWN1dGUgJXMgLS1yZXNldC1yZXN1bHRzICVzIERl
cml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20uc3ltYm9sc1xuIiAlIChzeXMuYXJndlsw
XSwgZnJvbV9maWxlKSkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZGlmZl9vdXQpCi0K
LSAgICByZXR1cm4gMAotCi0KLW9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIo
dXNhZ2U9J3VzYWdlOiAlcHJvZyBbb3B0aW9uc10gRlJPTV9GSUxFIFRPX0ZJTEUnKQotb3B0aW9u
X3BhcnNlci5hZGRfb3B0aW9uKCctLXJlc2V0LXJlc3VsdHMnLCBhY3Rpb249J3N0b3JlX3RydWUn
LCBkZXN0PSdyZXNldF9yZXN1bHRzJykKLW9wdGlvbnMsIGFyZ3MgPSBvcHRpb25fcGFyc2VyLnBh
cnNlX2FyZ3MoKQotc3lzLmV4aXQoY2hlY2tfYXBpKG9wdGlvbnMsIGFyZ3NbMF0sIGFyZ3NbMV0p
KQotCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
OTY0ZDMyODYyMzdhN2U0ODczNzdkNWQxYTM1ODQ0NTlhYjRhYTUxZC4uMDI1MGE5MDEwZWUzYzE5
ZTA1YTliOTk1OWUxZDA0NjAxZjE0MzczZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAzLTAzICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBTaW1wbGlm
eSB0aGUgR09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGNoZWNrIGludG8gb25lIHN0ZXAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU3MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06IEFkZCB0aGUgQVBJIGJyZWFrIGNoZWNrIHRvICdtYWtlIGNoZWNrLicKKyAgICAg
ICAgKiBndGsvY2hlY2stZm9yLXdlYmtpdGRvbS1hcGktYnJlYWtzOiBBZGRlZC4gQSBjb21iaW5h
dGlvbiBvZiB0aGUgdHdvIHJlbW92ZWQgc2NyaXB0cy4KKyAgICAgICAgKiBndGsvY2hlY2stZ2Rv
bS1zeW1ib2xzOiBSZW1vdmVkLgorICAgICAgICAqIGd0ay93ZWJraXRkb20ucHk6IEFkZGVkLgor
ICAgICAgICAoaGVhZGVyX25hbWVfbGlzdF9mcm9tX2d0a2RvY19jb25maWdfZmlsZSk6IEdldHMg
dGhlIG5hbWVzIG9mIGFsbCBoZWFkZXJzIGZyb20gdGhlIGd0a2RvYyBjb25maWcgZmlsZS4KKyAg
ICAgICAgKGdldF9hbGxfd2Via2l0ZG9tX3N5bWJvbF9maWxlcyk6IEZpbmQgdGhlIHN5bWJvbCBm
aWxlcyBmcm9tIHRoZSBuYW1lcy4KKwogMjAxNC0wMi0yNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb2RlbCB0ZXN0cyBzaG91bGQgdXNl
IGEgc3BlY2lhbCBUZXN0Lmh0bWwgaW5zcGVjdG9yIHBhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL0dO
VW1ha2VmaWxlLmFtIGIvVG9vbHMvR05VbWFrZWZpbGUuYW0KaW5kZXggMTQ3MGY2YmEzZjllMmQ4
NWNkNjQ4NWNmNTYxMjkwYjkyMjc1ODI2NS4uMTE1ZTA5YmZjZTZhN2NjMTA5MDZhMTA0MDE5ZGQ2
MjEzYTgxM2Q2YyAxMDA2NDQKLS0tIGEvVG9vbHMvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMv
R05VbWFrZWZpbGUuYW0KQEAgLTI2Nyw2ICsyNjcsNyBAQCBlbmRpZgogCiBjaGVjay1sb2NhbDoK
IAkkKHRvcF9zcmNkaXIpL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cyAtLXRpbWVvdXQ9LTEK
KwkkKHRvcF9zcmNkaXIpL1Rvb2xzL2d0ay9jaGVjay1mb3Itd2Via2l0ZG9tLWFwaS1icmVha3MK
IAogRVhUUkFfRElTVCArPSBcCiAJVG9vbHMvamhidWlsZC9qaGJ1aWxkdXRpbHMucHkgXApkaWZm
IC0tZ2l0IGEvVG9vbHMvZ3RrL2NoZWNrLWZvci13ZWJraXRkb20tYXBpLWJyZWFrcyBiL1Rvb2xz
L2d0ay9jaGVjay1mb3Itd2Via2l0ZG9tLWFwaS1icmVha3MKbmV3IGZpbGUgbW9kZSAxMDA3NTUK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTg1MGNjZjk5
MDk0NjA1MmZlNGI5MWRiZmUxYTg2YmFlMmI4NmFiNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2d0ay9jaGVjay1mb3Itd2Via2l0ZG9tLWFwaS1icmVha3MKQEAgLTAsMCArMSw3NyBAQAorIyEv
dXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBJZ2FsaWEgUy5M
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUu
b3JnPgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29tbW9uCitpbXBvcnQgb3MKK2ltcG9y
dCBzeXMKK2ltcG9ydCB3ZWJraXRkb20KKworRVhQRUNURURfQVBJX1BBVEggPSBjb21tb24udG9w
X2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmplY3QnLCAn
d2Via2l0ZG9tLnN5bWJvbHMnKQorCitkZWYgcmVhZF9idWlsdF9hcGkoKToKKyAgICBhcGlzID0g
c2V0KCkKKyAgICBmb3IgZmlsZV9wYXRoIGluIHdlYmtpdGRvbS5nZXRfYWxsX3dlYmtpdGRvbV9z
eW1ib2xfZmlsZXMoKToKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCkgYXMgZmlsZV9oYW5k
bGU6CisgICAgICAgICAgICBhcGlzLnVwZGF0ZShzZXQoZmlsZV9oYW5kbGUucmVhZGxpbmVzKCkp
KQorICAgIHJldHVybiBhcGlzCisKK2RlZiByZWFkX2V4cGVjdGVkX2FwaSgpOgorICAgIHdpdGgg
b3BlbihFWFBFQ1RFRF9BUElfUEFUSCkgYXMgZmlsZV9oYW5kbGU6CisgICAgICAgIHJldHVybiBz
ZXQoZmlsZV9oYW5kbGUucmVhZGxpbmVzKCkpCisKK2RlZiB3cml0ZV9leHBlY3RlZF9hcGkobmV3
X2V4cGVjdGVkX2FwaSk6CisgICAgd2l0aCBvcGVuKEVYUEVDVEVEX0FQSV9QQVRILCAndycpIGFz
IGZpbGVfaGFuZGxlOgorICAgICAgICBmaWxlX2hhbmRsZS53cml0ZWxpbmVzKG5ld19leHBlY3Rl
ZF9hcGkpCisKK2RlZiBjaGVja19hcGkob3B0aW9ucywgZXhwZWN0ZWRfYXBpLCBidWlsdF9hcGkp
OgorICAgIG1pc3NpbmdfYXBpID0gZXhwZWN0ZWRfYXBpLmRpZmZlcmVuY2UoYnVpbHRfYXBpKQor
ICAgIG5ld19hcGkgPSBidWlsdF9hcGkuZGlmZmVyZW5jZShleHBlY3RlZF9hcGkpCisKKyAgICBp
ZiBtaXNzaW5nX2FwaToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiTWlzc2luZyBBUEkgKEFQ
SSBicmVhayEpIGRldGVjdGVkIGluIEdPYmplY3QgRE9NIGJpbmRpbmdzXG4iKQorICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCIgICAgJXNcbiIgJSAiICAgICIuam9pbihtaXNzaW5nX2FwaSkpCisK
KyAgICBpZiBuZXdfYXBpOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJOZXcgQVBJIGRldGVj
dGVkIGluIEdPYmplY3QgRE9NIGJpbmRpbmdzXG4iKQorICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCIgICAgJXNcbiIgJSAiICAgICIuam9pbihuZXdfYXBpKSkKKworICAgIGlmIG1pc3NpbmdfYXBp
OgorICAgICAgICAjIFRoaXMgdGVzdCBjYW4gZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMgYmVjYXVzZSB0
aGUgR09iamVjdAorICAgICAgICAjIERPTSBiaW5kaW5ncyBBUEkgdmFyaWVzIGRlcGVuZGluZyBv
biB0aGUgY29tcGlsYXRpb24gb3B0aW9ucy4KKyAgICAgICAgIyBTbyB0aGlzIHNob3VsZG4ndCBi
ZSBtYWRlIGZhdGFsIHVudGlsIHdlIGZpZ3VyZSBvdXQgYSB3YXkgdG8gaGFuZGxlIGl0LgorICAg
ICAgICAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDgx
CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlJlLWFkZCB0aGUgbWlzc2luZyBBUEkgYW5kIHJl
cnVuIHRoZSAlcy5cbiIgJSBfX2ZpbGVfXykKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGlmIG5l
d19hcGk6CisgICAgICAgIGlmIG9wdGlvbnMucmVzZXRfcmVzdWx0czoKKyAgICAgICAgICAgIHN5
cy5zdGRvdXQud3JpdGUoIlJlc2V0dGluZyBleHBlY3RlZCBBUElcbiIpCisgICAgICAgICAgICB3
cml0ZV9leHBlY3RlZF9hcGkoYnVpbHRfYXBpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgiQVBJIGNvbXBhdGlibGUgY2hhbmdlcyBmb3VuZCBpbiBHT2JqZWN0
IERPTSBiaW5kaW5ncy5cbiIpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJUbyB1cGRh
dGUgdGhlIHN5bWJvbHMgZmlsZSwgcnVuICVzIC0tcmVzZXQtcmVzdWx0cy5cbiIgJSBfX2ZpbGVf
XykKKworICAgIHJldHVybiAwCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgcGFy
c2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0RldGVjdCBBUEkgYnJl
YWthZ2UgaW4gdGhlIFdlYktpdEdUSysgR09iamVjdCBET00gYmluZGluZ3MuJykKKyAgICBwYXJz
ZXIuYWRkX2FyZ3VtZW50KCctLXJlc2V0LXJlc3VsdHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2hlbiBzcGVjaWZpZWQsIHJlc3QgdGhlIGV4
cGVjdGVkIHJlc3VsdHMgZmlsZSB3aXRoIHRoZSBidWlsdCByZXN1bHRzLicpCisgICAgb3B0aW9u
cyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBzeXMuZXhpdChjaGVja19hcGkob3B0aW9ucywg
cmVhZF9leHBlY3RlZF9hcGkoKSwgcmVhZF9idWlsdF9hcGkoKSkpCmRpZmYgLS1naXQgYS9Ub29s
cy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzIGIvVG9vbHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmYzNWMyMTNkMGM1ZWM5MDMxZTEzOGJiZTA1
ZWUyOTU1ZjljN2I4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzCisrKyAvZGV2L251bGwKQEAgLTEsNjIg
KzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMyBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+Ci0jCi0jIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotIyBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotCi1pbXBvcnQgY29tbW9uCi1pbXBv
cnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0
IHRlbXBmaWxlCi0KLWRlZiBzaG91bGRfdXBkYXRlX3N5bWJvbHNfZmlsZShuZXcsIG9sZCk6Ci0g
ICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9sZCk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgbmV3ID0gb3BlbihuZXcpLnJlYWQoKQotICAgIG9sZCA9IG9wZW4ob2xkKS5yZWFkKCkKLQot
ICAgIGlmIGxlbihuZXcpICE9IGxlbihvbGQpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
IGZvciBpLCBieXRlIGluIGVudW1lcmF0ZShuZXcpOgotICAgICAgICBpZiBieXRlICE9IG9sZFtp
XToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgcmV0dXJuIFRydWUKLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5Rmls
ZSgpIGFzIHRtcDoKLSAgICAgICAgZm9yIGZpbGVfcGF0aCBpbiBnbG9iLmdsb2Iob3MucGF0aC5q
b2luKGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycpLCAnd2Via2l0ZG9tJywgJyou
aCcpKToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmJhc2VuYW1lKGZpbGVfcGF0aCkuc3Rh
cnRzd2l0aCgnV2ViS2l0Jykgb3IgZmlsZV9wYXRoLmVuZHN3aXRoKCdQcml2YXRlLmgnKToKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBmaWxlX3BhdGggPSBmaWxlX3Bh
dGgucmVwbGFjZSgnLmgnLCAnLnN5bWJvbHMnKQotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVf
cGF0aCkgYXMgZmlsZV9oYW5kbGU6Ci0gICAgICAgICAgICAgICAgdG1wLndyaXRlKGZpbGVfaGFu
ZGxlLnJlYWQoKSkKLSAgICAgICAgdG1wLmZsdXNoKCkKLQotICAgICAgICBnZG9tX3NvdXJjZV9w
YXRoID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3VyY2UnLCAnV2ViQ29yZScsICdiaW5kaW5n
cycpCi0gICAgICAgIGFwaV9icmVha190ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oZ2RvbV9zb3Vy
Y2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRlc3QnKQotICAgICAg
ICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxlLCBhcGlfYnJlYWtfdGVzdF9wYXRoLCBv
cy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dvYmplY3QnLCAgJ3dlYmtpdGRvbS5zeW1i
b2xzJyksIHRtcC5uYW1lXSkKLQotICAgICAgICBnZW5lcmF0ZWRfZ2RvbV9zeW1ib2xzX3BhdGgg
PSBvcy5wYXRoLmpvaW4oY29tbW9uLmJ1aWxkX3BhdGgoJ0Rlcml2ZWRTb3VyY2VzJyksICd3ZWJr
aXRkb20nLCAnd2Via2l0ZG9tLnN5bWJvbHMnKQotICAgICAgICBpZiBub3Qgc2hvdWxkX3VwZGF0
ZV9zeW1ib2xzX2ZpbGUodG1wLm5hbWUsIGdlbmVyYXRlZF9nZG9tX3N5bWJvbHNfcGF0aCk6Ci0g
ICAgICAgICAgICBzb3VyY2UgPSBvcGVuKHRtcC5uYW1lLCAncicpCi0gICAgICAgICAgICBkZXN0
aW5hdGlvbiA9IG9wZW4oZ2VuZXJhdGVkX2dkb21fc3ltYm9sc19wYXRoLCAndycpCi0gICAgICAg
ICAgICBkZXN0aW5hdGlvbi53cml0ZShzb3VyY2UucmVhZCgpKQotICAgICAgICAgICAgZGVzdGlu
YXRpb24uY2xvc2UoKQotICAgICAgICAgICAgc291cmNlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL2d0ay93ZWJraXRkb20ucHkgYi9Ub29scy9ndGsvd2Via2l0ZG9tLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ4YjE3ODlhMGFiYWVhODNkYWQxMDhkMTU3ZDE2MzNhZDc1YzdmNjcKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9ndGsvd2Via2l0ZG9tLnB5CkBAIC0wLDAgKzEsNjEgQEAKKyMhL3Vzci9iaW4v
ZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
IyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
IyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUg
dG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQorIyAwMjExMC0xMzAxICBVU0EKKworaW1wb3J0
IGNvbW1vbgoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisKK2Zyb20gQ29uZmlnUGFyc2VyIGltcG9y
dCBTYWZlQ29uZmlnUGFyc2VyCisKKworZGVmIGhlYWRlcl9uYW1lX2xpc3RfZnJvbV9ndGtkb2Nf
Y29uZmlnX2ZpbGUoKToKKyAgICBjb25maWdfZmlsZSA9IGNvbW1vbi5idWlsZF9wYXRoKCdndGtk
b2Mtd2Via2l0ZG9tLmNmZycpCisgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGNvbmZpZ19maWxl
KToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ291bGQgbm90IGZpbmQgY29uZmlnIGZpbGUg
YXQgJXNcbiIgJSBjb25maWdfZmlsZSkKKyAgICAgICAgcmV0dXJuIHN5cy5leGl0KDEpCisKKyAg
ICBjb25maWcgPSBTYWZlQ29uZmlnUGFyc2VyKCkKKyAgICBjb25maWcucmVhZChjb25maWdfZmls
ZSkKKyAgICBtb2R1bGVfbmFtZSA9IGNvbmZpZy5zZWN0aW9ucygpWzBdCisgICAgcmV0dXJuIFtv
cy5wYXRoLmJhc2VuYW1lKGYpIGZvciBmIGluIHN0cihjb25maWcuZ2V0KG1vZHVsZV9uYW1lLCAn
aGVhZGVycycpKS5yZXBsYWNlKCc7JywgJyAnKS5zcGxpdCgpXQorCisKK2RlZiBnZXRfYWxsX3dl
YmtpdGRvbV9zeW1ib2xfZmlsZXMoKToKKyAgICBzdGF0aWNfc3ltYm9sX2ZpbGVzX3BhdGggPSBj
b21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dv
YmplY3QnKQorICAgIGdlbmVyYXRlZF9zeW1ib2xfZmlsZXNfcGF0aCA9IGNvbW1vbi5idWlsZF9w
YXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXRkb20nKQorCisgICAgc3ltYm9sX2ZpbGVzID0g
W10KKyAgICBmb3IgaGVhZGVyX25hbWUgaW4gaGVhZGVyX25hbWVfbGlzdF9mcm9tX2d0a2RvY19j
b25maWdfZmlsZSgpOgorICAgICAgICAjIHdlYmtpdGRvbWRlZmluZXMuaCBkb2Vzbid0IGhhdmUg
YSBjb3JyZXNwb25kaW5nIHN5bWJvbHMgZmlsZSBhbmQgd2Via2l0ZG9tLnN5bWJvbHMgaXMgYQor
ICAgICAgICAjIGZpbGUgY29udGFpbmluZyB0aGUgZXhwZWN0ZWQgc3ltYm9scyByZXN1bHRzLgor
ICAgICAgICBpZiBoZWFkZXJfbmFtZSA9PSAid2Via2l0ZG9tLmgiIG9yIGhlYWRlcl9uYW1lID09
ICJ3ZWJraXRkb21kZWZpbmVzLmgiOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBz
eW1ib2xfZmlsZSA9IGhlYWRlcl9uYW1lLnJlcGxhY2UoIi5oIiwgIi5zeW1ib2xzIikKKyAgICAg
ICAgcGF0aCA9IG9zLnBhdGguam9pbihzdGF0aWNfc3ltYm9sX2ZpbGVzX3BhdGgsIHN5bWJvbF9m
aWxlKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgIHN5bWJv
bF9maWxlcy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhdGgg
PSBvcy5wYXRoLmpvaW4oZ2VuZXJhdGVkX3N5bWJvbF9maWxlc19wYXRoLCBzeW1ib2xfZmlsZSkK
KyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICBzeW1ib2xfZmls
ZXMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCJDb3VsZCBub3QgZmluZCBzeW1ib2wgZmlsZSBmb3IgaGVhZGVyOiAlc1xuIiAlIGhl
YWRlcl9uYW1lKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgcmV0dXJuIHN5bWJvbF9maWxl
cwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM2NzViNDlhOTRjMzkz
YjE4MGE5ZTZhODk1YWE2MzY2YTcwYzcyZjYuLjNkZjY2Yjk4MWEyMDBlMjNhOTVjMmE3NjliNmNl
ODM1MWM3ZDZiOTYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNC0wMy0wMyAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gU2ltcGxpZnkgdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdz
IEFQSSBicmVhayBjaGVjayBpbnRvIG9uZSBzdGVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZTogV2UgZG9u
J3QgbmVlZCB0byBydW4gdGhlIEFQSSBicmVhayBjaGVjayBiZWZvcmUgZ3RrZG9jIGdlbmVyYXRp
b24uCisgICAgICAgIEFkZCB0aGUgY2hlY2sgdG8gJ21ha2UgY2hlY2suJworCiAyMDE0LTAyLTI4
ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XVtDTWFrZV0gRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIGlzIG1pc3Rha2VubHkgZW5h
YmxlZCBmb3IgdGhlIENNYWtlIGJ1aWxkCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225781</attachid>
            <date>2014-03-04 08:39:47 -0800</date>
            <delta_ts>2014-03-04 10:38:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129571-20140304083946.patch</filename>
            <type>text/plain</type>
            <size>19300</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0ODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVmNGFjMjRhZWFlMjQ4
YjQ3ZTEyYWYyNjc3NjAxNGZjYzUzOTFkNC4uNzk5ODQ2NmZhNzc0MTY0NTRiZTFkYmY5NjlkMGU3
MmE5MTgwZjQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE0LTAzLTAzICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBTaW1w
bGlmeSB0aGUgR09iamVjdCBET00gYmluZGluZ3MgQVBJIGJyZWFrIGNoZWNrIGludG8gb25lIHN0
ZXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTU3
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmlu
ZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbTogV2Ugbm8gbG9uZ2VyIGdlbmVyYXRlIHRoZSB3
ZWJraXRkb20uc3ltYm9scyBmaWxlIGluIHRoZQorICAgICAgICBEZXJpdmVkU291cmNlcyBkaXJl
Y3RvcnkuIEFsbCB0aGUgbG9naWMgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGluIHRoZSBzY3JpcHQg
bm93LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRl
c3Q6IFJlbW92ZWQuCisKIDIwMTQtMDItMTcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxk
QGFwcGxlLmNvbT4KIAogICAgICAgICB0ZXh0LWRlY29yYXRpb24tc2tpcDogaW5rIGRvZXMgbm90
IHNraXAgb3ZlciBTVkcgZm9udHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFr
ZSBiL1NvdXJjZS9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBhNTFiMDhmOTRiNGJkMDgxZmU1YWJh
NmUwODljYWRjNTg5M2JlNWQyLi42NGNmNTBmZDc0M2I1MGRkNGUxNWE0MWVkNjJkNTlhOGIyNTEw
ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1Bs
YXRmb3JtR1RLLmNtYWtlCkBAIC00LDcgKzQsNiBAQCBhZGRfc3ViZGlyZWN0b3J5KCR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2d0ay9wbykKIGFkZF9jdXN0b21fdGFyZ2V0KGdpciBBTEwgREVQRU5E
UyAke0dPYmplY3RJbnRyb3NwZWN0aW9uVGFyZ2V0c30pCiAKIHNldChEb2N1bWVudGF0aW9uRGVw
ZW5kZW5jaWVzCi0gICAgZ2VuZXJhdGUtZ2RvbS1zeW1ib2xzLWZpbGUKICAgICAiJHtDTUFLRV9T
T1VSQ0VfRElSfS9Tb3VyY2UvV2ViS2l0L2d0ay9kb2NzL3dlYmtpdGVudmlyb25tZW50LnhtbCIK
ICkKIApAQCAtNTEsNyArNTAsOCBAQCBpZiAoRU5BQkxFX1dFQktJVDIpCiBlbmRpZiAoKQogCiBh
ZGRfY3VzdG9tX3RhcmdldChjaGVjawotICAgIENPTU1BTkQgIiR7VE9PTFNfRElSfS9TY3JpcHRz
L3J1bi1ndGstdGVzdHMiCisgICAgQ09NTUFORCAke1RPT0xTX0RJUn0vU2NyaXB0cy9ydW4tZ3Rr
LXRlc3RzCisgICAgQ09NTUFORCAke1RPT0xTX0RJUn0vZ3RrL2NoZWNrLWZvci13ZWJraXRkb20t
YXBpLWJyZWFrcwogKQogCiBpZiAoRU5BQkxFX1dFQktJVCBBTkQgRU5BQkxFX1dFQktJVDIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtCmluZGV4IGE5NzhjNmM2ODBiZDg2MTkyZjk1NjhiNzNiNjJmZTg5ODIx
ZTYwNTQuLjUxZDE3MmNmZGI0NTVhMmQ2MWIxNzZlN2JhYmI0MmI4YjZkMDEyOGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCkBAIC02NjMsNyArNjYzLDYgQEAgRVhUUkFfRElTVCArPSBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9TdGF0aWNTdHJpbmcucG0gXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtcnVuLWFwaS1icmVhay10ZXN0IFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3Nvci5wbSBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgXAogCVNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4IGZhOTFh
NmEzMmQ4Y2M1NjgzN2Q4NGY4NTlhZTkyMzg5NmJhZmM5NWMuLmFlNTQ4MWFkYTZjZjRjZGZjZTA2
OWVjNmNlMTA0YzM4NWEwN2FhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
R1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC03MzEs
MTYgKzczMSw1IEBAIGlmIChFTkFCTEVfV0VCS0lUMikKICAgICAgICAgICAgICAgICAgIGJpbmRp
bmdzL2dvYmplY3QvV2ViS2l0RE9NT2JqZWN0LmgKICAgICAgICAgICAgIERFU1RJTkFUSU9OICIk
e1dFQktJVEdUS19IRUFERVJfSU5TVEFMTF9ESVJ9L3dlYmtpdGRvbSIKICAgICApCi0KLSAgICBh
ZGRfY3VzdG9tX2NvbW1hbmQoCi0gICAgICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19HT0JK
RUNUX0RPTV9CSU5ESU5HU19ESVJ9L3dlYmtpdGRvbS5zeW1ib2xzCi0gICAgICAgIERFUEVORFMg
JHtHT2JqZWN0RE9NQmluZGluZ3NTeW1ib2xzRmlsZXN9ICR7Q01BS0VfU09VUkNFX0RJUn0vVG9v
bHMvZ3RrL2NoZWNrLWdkb20tc3ltYm9scwotICAgICAgICBDT01NQU5EIGxuIC1uIC1zIC1mICR7
V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NKi5zeW1ib2xzICR7REVSSVZF
RF9TT1VSQ0VTX0dPQkpFQ1RfRE9NX0JJTkRJTkdTX0RJUn0KLSAgICAgICAgQ09NTUFORCAke0NN
QUtFX1NPVVJDRV9ESVJ9L1Rvb2xzL2d0ay9jaGVjay1nZG9tLXN5bWJvbHMKLSAgICApCi0KLSAg
ICBhZGRfY3VzdG9tX3RhcmdldChnZW5lcmF0ZS1nZG9tLXN5bWJvbHMtZmlsZQotICAgICAgICBE
RVBFTkRTIEdPYmplY3RET01CaW5kaW5ncyAke0RFUklWRURfU09VUkNFU19HT0JKRUNUX0RPTV9C
SU5ESU5HU19ESVJ9L3dlYmtpdGRvbS5zeW1ib2xzCi0gICAgKQogZW5kaWYgKCkKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KaW5kZXggYTE3NDE2
YWEzMmY4YzNmOWU4MjdjOGQ0NmJkYTMxMGZmMDRmZjhiNS4uYzg0ZmUxNzk1NDEzNWYzMGNlMmQx
ZTJmMGY1ZGUyOTcyYWYzYmIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC00ODAsNyArNDgwLDYgQEAgRGVyaXZlZFNvdXJjZXMvd2Vi
a2l0ZG9tL3dlYmtpdGRvbS5oOiAkKFdlYkNvcmUpL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1n
ZW5lcmEKIERlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb21kZWZpbmVzLmg6ICQoV2Vi
Q29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgJChXZWJD
b3JlKS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCiAJJChBTV9WX0dFTillY2hvICQo
Z2RvbV9jbGFzc19saXN0KSB8ICQoUEVSTCkgJDwgZGVmaW5lcyA+ICRACiAKLW5vaW5zdF9EQVRB
ICs9IERlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20uc3ltYm9scwogZ2RvbV9zeW1i
b2xfZmlsZXMgKz0gJChwYXRzdWJzdCAlLmgsJS5zeW1ib2xzLCAkKGZpbHRlciBEZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NJS5oLCAkKHdlYmtpdGd0a19nZG9tX2J1aWx0X2hfYXBp
KSkpCiAKICQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9N
T2JqZWN0LnN5bWJvbHM6ICQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmpl
Y3Quc3ltYm9scwpAQCAtNDk4LDkgKzQ5Nyw2IEBAICQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NRGVwcmVjYXRlZC5zeW1ib2xzOiAkKFdlYkNvcmUpCiBE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NJS5zeW1ib2xzOiBEZXJpdmVkU291cmNl
cy93ZWJraXRkb20vV2ViS2l0RE9NJS5oCiAJQHRydWUKIAotRGVyaXZlZFNvdXJjZXMvd2Via2l0
ZG9tL3dlYmtpdGRvbS5zeW1ib2xzOiAkKGdkb21fc3ltYm9sX2ZpbGVzKSAkKFdlYkNvcmUpL2Jp
bmRpbmdzL2dvYmplY3Qvd2Via2l0ZG9tLnN5bWJvbHMgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3Jp
cHRzL2dvYmplY3QtcnVuLWFwaS1icmVhay10ZXN0ICQoc3JjZGlyKS9Ub29scy9ndGsvY2hlY2st
Z2RvbS1zeW1ib2xzCi0JJChBTV9WX0dFTikkKHNyY2RpcikvVG9vbHMvZ3RrL2NoZWNrLWdkb20t
c3ltYm9scwotCiBFWFRSQV9ESVNUICs9IFwKIAkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NQ3VzdG9tLnN5bWJvbHMgXAogCSQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01EZXByZWNhdGVkLnN5bWJvbHMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LXJ1bi1hcGktYnJlYWstdGVzdCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1ydW4tYXBpLWJyZWFrLXRlc3QKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDMyMDhlNjNiZDEzNWEzNmI2NDJhMWFkM2VmOGVmY2M4MDdk
NGQ1YjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LXJ1bi1hcGktYnJlYWstdGVzdAor
KysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBD
b3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0jIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0KLWltcG9ydCBkaWZmbGliCi1pbXBvcnQg
b3B0cGFyc2UKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKLQotZGVmIGNoZWNrX2FwaShvcHRp
b25zLCBmcm9tX2ZpbGUsIHRvX2ZpbGUpOgotICAgIGZyb21fbGluZXMgPSBvcGVuKGZyb21fZmls
ZSwgJ3InKS5yZWFkbGluZXMoKQotICAgIGZyb21fbGluZXMuc29ydCgpCi0gICAgdG9fbGluZXMg
PSBvcGVuKHRvX2ZpbGUsICdyJykucmVhZGxpbmVzKCkKLSAgICB0b19saW5lcy5zb3J0KCkKLQot
ICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tX2xpbmVzLCB0b19saW5lcykKLQot
ICAgIGRpZmZfb3V0ID0gIiIKLSAgICBmYWlsZWQgPSBGYWxzZQotICAgIGZvciBsaW5lIGluIGRp
ZmY6Ci0gICAgICAgICMgSWdub3JlIGluaXRpYWwgbGluZXMgc2luY2Ugd2UgZG9uJ3QgdXNlIGZy
b20vZmlsZSBmaWxlbmFtZXMuCi0gICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnKysrJykgb3Ig
bGluZS5zdGFydHN3aXRoKCctLS0nKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
ZGlmZl9vdXQgKz0gbGluZQotICAgICAgICBpZiBsaW5lWzBdID09ICctJzoKLSAgICAgICAgICAg
IGZhaWxlZCA9IFRydWUKLQotICAgIGlmIGRpZmZfb3V0OgotICAgICAgICBpZiBmYWlsZWQ6Ci0g
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJBUEkgaW5jb21wYXRpYmlsaXR5IGRldGVjdGVk
IGluIEdPYmplY3QgRE9NIGJpbmRpbmdzXG4iKQotICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0
ZShkaWZmX291dCkKLSAgICAgICAgICAgICMgVGhpcyB0ZXN0IGNhbiBnaXZlIGZhbHNlIHBvc2l0
aXZlcyBiZWNhdXNlIHRoZSBHT2JqZWN0Ci0gICAgICAgICAgICAjIERPTSBiaW5kaW5ncyBBUEkg
dmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsYXRpb24gb3B0aW9ucy4KLSAgICAgICAgICAg
ICMgU28gdGhpcyBzaG91bGRuJ3QgYmUgbWFkZSBmYXRhbCB1bnRpbCB3ZSBmaWd1cmUgb3V0IGEg
d2F5IHRvIGhhbmRsZSBpdC4KLSAgICAgICAgICAgICMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE0ODEKLSAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICAg
ICAgaWYgb3B0aW9ucy5yZXNldF9yZXN1bHRzOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0
ZSgiUmVzZXQgcmVzdWx0czogJXNcbiIgJSBmcm9tX2ZpbGUpCi0gICAgICAgICAgICBzaHV0aWwu
Y29weWZpbGUodG9fZmlsZSwgZnJvbV9maWxlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgiQVBJIGNvbXBhdGlibGUgY2hhbmdlcyBmb3VuZCBpbiBHT2JqZWN0
IERPTSBiaW5kaW5nc1xuIikKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlRvIHVwZGF0
ZSB0aGUgc3ltYm9scyBmaWxlLCBleGVjdXRlICVzIC0tcmVzZXQtcmVzdWx0cyAlcyBEZXJpdmVk
U291cmNlcy93ZWJraXRkb20vd2Via2l0ZG9tLnN5bWJvbHNcbiIgJSAoc3lzLmFyZ3ZbMF0sIGZy
b21fZmlsZSkpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRpZmZfb3V0KQotCi0gICAg
cmV0dXJuIDAKLQotCi1vcHRpb25fcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKHVzYWdl
PSd1c2FnZTogJXByb2cgW29wdGlvbnNdIEZST01fRklMRSBUT19GSUxFJykKLW9wdGlvbl9wYXJz
ZXIuYWRkX29wdGlvbignLS1yZXNldC1yZXN1bHRzJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVz
dD0ncmVzZXRfcmVzdWx0cycpCi1vcHRpb25zLCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJzZV9h
cmdzKCkKLXN5cy5leGl0KGNoZWNrX2FwaShvcHRpb25zLCBhcmdzWzBdLCBhcmdzWzFdKSkKLQpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk2NGQz
Mjg2MjM3YTdlNDg3Mzc3ZDVkMWEzNTg0NDU5YWI0YWE1MWQuLjAyNTBhOTAxMGVlM2MxOWUwNWE5
Yjk5NTllMWQwNDYwMWYxNDM3M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMy0wMyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2ltcGxpZnkgdGhl
IEdPYmplY3QgRE9NIGJpbmRpbmdzIEFQSSBicmVhayBjaGVjayBpbnRvIG9uZSBzdGVwCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOiBBZGQgdGhlIEFQSSBicmVhayBjaGVjayB0byAnbWFrZSBjaGVjay4nCisgICAgICAgICog
Z3RrL2NoZWNrLWZvci13ZWJraXRkb20tYXBpLWJyZWFrczogQWRkZWQuIEEgY29tYmluYXRpb24g
b2YgdGhlIHR3byByZW1vdmVkIHNjcmlwdHMuCisgICAgICAgICogZ3RrL2NoZWNrLWdkb20tc3lt
Ym9sczogUmVtb3ZlZC4KKyAgICAgICAgKiBndGsvd2Via2l0ZG9tLnB5OiBBZGRlZC4KKyAgICAg
ICAgKGhlYWRlcl9uYW1lX2xpc3RfZnJvbV9ndGtkb2NfY29uZmlnX2ZpbGUpOiBHZXRzIHRoZSBu
YW1lcyBvZiBhbGwgaGVhZGVycyBmcm9tIHRoZSBndGtkb2MgY29uZmlnIGZpbGUuCisgICAgICAg
IChnZXRfYWxsX3dlYmtpdGRvbV9zeW1ib2xfZmlsZXMpOiBGaW5kIHRoZSBzeW1ib2wgZmlsZXMg
ZnJvbSB0aGUgbmFtZXMuCisKIDIwMTQtMDItMjcgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW9kZWwgdGVzdHMgc2hvdWxkIHVzZSBhIHNw
ZWNpYWwgVGVzdC5odG1sIGluc3BlY3RvciBwYWdlCmRpZmYgLS1naXQgYS9Ub29scy9HTlVtYWtl
ZmlsZS5hbSBiL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE0NzBmNmJhM2Y5ZTJkODVjZDY0
ODVjZjU2MTI5MGI5MjI3NTgyNjUuLjExNWUwOWJmY2U2YTdjYzEwOTA2YTEwNDAxOWRkNjIxM2E4
MTNkNmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL0dOVW1h
a2VmaWxlLmFtCkBAIC0yNjcsNiArMjY3LDcgQEAgZW5kaWYKIAogY2hlY2stbG9jYWw6CiAJJCh0
b3Bfc3JjZGlyKS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMgLS10aW1lb3V0PS0xCisJJCh0
b3Bfc3JjZGlyKS9Ub29scy9ndGsvY2hlY2stZm9yLXdlYmtpdGRvbS1hcGktYnJlYWtzCiAKIEVY
VFJBX0RJU1QgKz0gXAogCVRvb2xzL2poYnVpbGQvamhidWlsZHV0aWxzLnB5IFwKZGlmZiAtLWdp
dCBhL1Rvb2xzL2d0ay9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL2d0ay9HTlVtYWtlZmlsZS5hbQpp
bmRleCBmMjUwOTI5ZjAzMzUwODkxMDA5MWVlYzQ2YTkxNmEyMDhmMTgxYTNlLi5kZDM5NzhjZjlk
ZmZlNTIxYjBkOTJjZDE0OGIyYzY4NmFkZDg3ZWQ0IDEwMDY0NAotLS0gYS9Ub29scy9ndGsvR05V
bWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xLDQgKzEsNSBA
QAogRVhUUkFfRElTVCArPSBcCisJVG9vbHMvZ3RrL2NoZWNrLWZvci13ZWJraXRkb20tYXBpLWJy
ZWFrcyBcCiAJVG9vbHMvZ3RrL2NvbW1vbi5weSBcCiAJVG9vbHMvZ3RrL2dlbmVyYXRlLWZlYXR1
cmUtZGVmaW5lcy1maWxlcyBcCiAJVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBcCmRpZmYgLS1n
aXQgYS9Ub29scy9ndGsvY2hlY2stZm9yLXdlYmtpdGRvbS1hcGktYnJlYWtzIGIvVG9vbHMvZ3Rr
L2NoZWNrLWZvci13ZWJraXRkb20tYXBpLWJyZWFrcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjQyMzdiNTExMWFj
ZGM1OTBjZTJmY2ExNWEyZTlhYWI0MjgxM2NkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvZ3Rr
L2NoZWNrLWZvci13ZWJraXRkb20tYXBpLWJyZWFrcwpAQCAtMCwwICsxLDc4IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IElnYWxpYSBTLkwuCisj
IENvcHlyaWdodCAoQykgMjAxMyBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQorCitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb21tb24KK2ltcG9ydCBvcworaW1wb3J0IHN5
cworaW1wb3J0IHdlYmtpdGRvbQorCitFWFBFQ1RFRF9BUElfUEFUSCA9IGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnU291cmNlJywgJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnZ29iamVjdCcsICd3ZWJr
aXRkb20uc3ltYm9scycpCisKK2RlZiByZWFkX2J1aWx0X2FwaSgpOgorICAgIGFwaXMgPSBzZXQo
KQorICAgIGZvciBmaWxlX3BhdGggaW4gd2Via2l0ZG9tLmdldF9hbGxfd2Via2l0ZG9tX3N5bWJv
bF9maWxlcygpOgorICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoKSBhcyBmaWxlX2hhbmRsZToK
KyAgICAgICAgICAgIGFwaXMudXBkYXRlKHNldChmaWxlX2hhbmRsZS5yZWFkbGluZXMoKSkpCisg
ICAgcmV0dXJuIGFwaXMKKworZGVmIHJlYWRfZXhwZWN0ZWRfYXBpKCk6CisgICAgd2l0aCBvcGVu
KEVYUEVDVEVEX0FQSV9QQVRIKSBhcyBmaWxlX2hhbmRsZToKKyAgICAgICAgcmV0dXJuIHNldChm
aWxlX2hhbmRsZS5yZWFkbGluZXMoKSkKKworZGVmIHdyaXRlX2V4cGVjdGVkX2FwaShuZXdfZXhw
ZWN0ZWRfYXBpKToKKyAgICB3aXRoIG9wZW4oRVhQRUNURURfQVBJX1BBVEgsICd3JykgYXMgZmls
ZV9oYW5kbGU6CisgICAgICAgIGZpbGVfaGFuZGxlLndyaXRlbGluZXMobmV3X2V4cGVjdGVkX2Fw
aSkKKworZGVmIGNoZWNrX2FwaShvcHRpb25zLCBleHBlY3RlZF9hcGksIGJ1aWx0X2FwaSk6Cisg
ICAgbWlzc2luZ19hcGkgPSBleHBlY3RlZF9hcGkuZGlmZmVyZW5jZShidWlsdF9hcGkpCisgICAg
bmV3X2FwaSA9IGJ1aWx0X2FwaS5kaWZmZXJlbmNlKGV4cGVjdGVkX2FwaSkKKworICAgIGlmIG1p
c3NpbmdfYXBpOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJNaXNzaW5nIEFQSSAoQVBJIGJy
ZWFrISkgZGV0ZWN0ZWQgaW4gR09iamVjdCBET00gYmluZGluZ3NcbiIpCisgICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoIiAgICAlc1xuIiAlICIgICAgIi5qb2luKG1pc3NpbmdfYXBpKSkKKyAgICAg
ICAgc3lzLnN0ZGVyci5mbHVzaCgpCisKKyAgICBpZiBuZXdfYXBpOgorICAgICAgICBzeXMuc3Rk
b3V0LndyaXRlKCJOZXcgQVBJIGRldGVjdGVkIGluIEdPYmplY3QgRE9NIGJpbmRpbmdzXG4iKQor
ICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgICAgJXNcbiIgJSAiICAgICIuam9pbihuZXdfYXBp
KSkKKworICAgIGlmIG1pc3NpbmdfYXBpOgorICAgICAgICAjIFRoaXMgdGVzdCBjYW4gZ2l2ZSBm
YWxzZSBwb3NpdGl2ZXMgYmVjYXVzZSB0aGUgR09iamVjdAorICAgICAgICAjIERPTSBiaW5kaW5n
cyBBUEkgdmFyaWVzIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsYXRpb24gb3B0aW9ucy4KKyAgICAg
ICAgIyBTbyB0aGlzIHNob3VsZG4ndCBiZSBtYWRlIGZhdGFsIHVudGlsIHdlIGZpZ3VyZSBvdXQg
YSB3YXkgdG8gaGFuZGxlIGl0LgorICAgICAgICAjIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNDgxCisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlJlLWFk
ZCB0aGUgbWlzc2luZyBBUEkgYW5kIHJlcnVuIHRoZSAlcy5cbiIgJSBfX2ZpbGVfXykKKyAgICAg
ICAgcmV0dXJuIDAKKworICAgIGlmIG5ld19hcGk6CisgICAgICAgIGlmIG9wdGlvbnMucmVzZXRf
cmVzdWx0czoKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlJlc2V0dGluZyBleHBlY3Rl
ZCBBUElcbiIpCisgICAgICAgICAgICB3cml0ZV9leHBlY3RlZF9hcGkoYnVpbHRfYXBpKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiQVBJIGNvbXBhdGlibGUg
Y2hhbmdlcyBmb3VuZCBpbiBHT2JqZWN0IERPTSBiaW5kaW5ncy5cbiIpCisgICAgICAgICAgICBz
eXMuc3Rkb3V0LndyaXRlKCJUbyB1cGRhdGUgdGhlIHN5bWJvbHMgZmlsZSwgcnVuICVzIC0tcmVz
ZXQtcmVzdWx0cy5cbiIgJSBfX2ZpbGVfXykKKworICAgIHJldHVybiAwCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVz
Y3JpcHRpb249J0RldGVjdCBBUEkgYnJlYWthZ2UgaW4gdGhlIFdlYktpdEdUSysgR09iamVjdCBE
T00gYmluZGluZ3MuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlc2V0LXJlc3VsdHMn
LCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2hl
biBzcGVjaWZpZWQsIHJlc3QgdGhlIGV4cGVjdGVkIHJlc3VsdHMgZmlsZSB3aXRoIHRoZSBidWls
dCByZXN1bHRzLicpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBzeXMu
ZXhpdChjaGVja19hcGkob3B0aW9ucywgcmVhZF9leHBlY3RlZF9hcGkoKSwgcmVhZF9idWlsdF9h
cGkoKSkpCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xzIGIvVG9vbHMv
Z3RrL2NoZWNrLWdkb20tc3ltYm9scwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYmYz
NWMyMTNkMGM1ZWM5MDMxZTEzOGJiZTA1ZWUyOTU1ZjljN2I4ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9ndGsvY2hlY2stZ2RvbS1zeW1ib2xz
CisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
IENvcHlyaWdodCAoQykgMjAxMyBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
Ci0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVT
QQotCi1pbXBvcnQgY29tbW9uCi1pbXBvcnQgZ2xvYgotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJv
Y2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi0KLWRlZiBzaG91bGRfdXBkYXRlX3N5
bWJvbHNfZmlsZShuZXcsIG9sZCk6Ci0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9sZCk6Ci0g
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgbmV3ID0gb3BlbihuZXcpLnJlYWQoKQotICAgIG9s
ZCA9IG9wZW4ob2xkKS5yZWFkKCkKLQotICAgIGlmIGxlbihuZXcpICE9IGxlbihvbGQpOgotICAg
ICAgICByZXR1cm4gRmFsc2UKLQotICAgIGZvciBpLCBieXRlIGluIGVudW1lcmF0ZShuZXcpOgot
ICAgICAgICBpZiBieXRlICE9IG9sZFtpXToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0g
ICAgcmV0dXJuIFRydWUKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB3aXRoIHRl
bXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpIGFzIHRtcDoKLSAgICAgICAgZm9yIGZpbGVfcGF0
aCBpbiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291
cmNlcycpLCAnd2Via2l0ZG9tJywgJyouaCcpKToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRo
LmJhc2VuYW1lKGZpbGVfcGF0aCkuc3RhcnRzd2l0aCgnV2ViS2l0Jykgb3IgZmlsZV9wYXRoLmVu
ZHN3aXRoKCdQcml2YXRlLmgnKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICAgICBmaWxlX3BhdGggPSBmaWxlX3BhdGgucmVwbGFjZSgnLmgnLCAnLnN5bWJvbHMnKQotICAg
ICAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCkgYXMgZmlsZV9oYW5kbGU6Ci0gICAgICAgICAg
ICAgICAgdG1wLndyaXRlKGZpbGVfaGFuZGxlLnJlYWQoKSkKLSAgICAgICAgdG1wLmZsdXNoKCkK
LQotICAgICAgICBnZG9tX3NvdXJjZV9wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdTb3Vy
Y2UnLCAnV2ViQ29yZScsICdiaW5kaW5ncycpCi0gICAgICAgIGFwaV9icmVha190ZXN0X3BhdGgg
PSBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ3NjcmlwdHMnLCAnZ29iamVjdC1ydW4t
YXBpLWJyZWFrLXRlc3QnKQotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoW3N5cy5leGVjdXRhYmxl
LCBhcGlfYnJlYWtfdGVzdF9wYXRoLCBvcy5wYXRoLmpvaW4oZ2RvbV9zb3VyY2VfcGF0aCwgJ2dv
YmplY3QnLCAgJ3dlYmtpdGRvbS5zeW1ib2xzJyksIHRtcC5uYW1lXSkKLQotICAgICAgICBnZW5l
cmF0ZWRfZ2RvbV9zeW1ib2xzX3BhdGggPSBvcy5wYXRoLmpvaW4oY29tbW9uLmJ1aWxkX3BhdGgo
J0Rlcml2ZWRTb3VyY2VzJyksICd3ZWJraXRkb20nLCAnd2Via2l0ZG9tLnN5bWJvbHMnKQotICAg
ICAgICBpZiBub3Qgc2hvdWxkX3VwZGF0ZV9zeW1ib2xzX2ZpbGUodG1wLm5hbWUsIGdlbmVyYXRl
ZF9nZG9tX3N5bWJvbHNfcGF0aCk6Ci0gICAgICAgICAgICBzb3VyY2UgPSBvcGVuKHRtcC5uYW1l
LCAncicpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbiA9IG9wZW4oZ2VuZXJhdGVkX2dkb21fc3lt
Ym9sc19wYXRoLCAndycpCi0gICAgICAgICAgICBkZXN0aW5hdGlvbi53cml0ZShzb3VyY2UucmVh
ZCgpKQotICAgICAgICAgICAgZGVzdGluYXRpb24uY2xvc2UoKQotICAgICAgICAgICAgc291cmNl
LmNsb3NlKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay93ZWJraXRkb20ucHkgYi9Ub29scy9ndGsv
d2Via2l0ZG9tLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTk0MmVkODU4Mjk5NmQxODQ4MTJhOTMwZjhjZjc4
Y2I1OWNmMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9ndGsvd2Via2l0ZG9tLnB5CkBAIC0w
LDAgKzEsNjEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTMg
SWdhbGlhIFMuTC4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQorIyAw
MjExMC0xMzAxICBVU0EKKworaW1wb3J0IGNvbW1vbgoraW1wb3J0IG9zCitpbXBvcnQgc3lzCisK
K2Zyb20gQ29uZmlnUGFyc2VyIGltcG9ydCBTYWZlQ29uZmlnUGFyc2VyCisKKworZGVmIGhlYWRl
cl9uYW1lX2xpc3RfZnJvbV9ndGtkb2NfY29uZmlnX2ZpbGUoKToKKyAgICBjb25maWdfZmlsZSA9
IGNvbW1vbi5idWlsZF9wYXRoKCdndGtkb2Mtd2Via2l0ZG9tLmNmZycpCisgICAgaWYgbm90IG9z
LnBhdGguaXNmaWxlKGNvbmZpZ19maWxlKToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiQ291
bGQgbm90IGZpbmQgY29uZmlnIGZpbGUgYXQgJXNcbiIgJSBjb25maWdfZmlsZSkKKyAgICAgICAg
cmV0dXJuIHN5cy5leGl0KDEpCisKKyAgICBjb25maWcgPSBTYWZlQ29uZmlnUGFyc2VyKCkKKyAg
ICBjb25maWcucmVhZChjb25maWdfZmlsZSkKKyAgICBtb2R1bGVfbmFtZSA9IGNvbmZpZy5zZWN0
aW9ucygpWzBdCisgICAgcmV0dXJuIFtvcy5wYXRoLmJhc2VuYW1lKGYpIGZvciBmIGluIHN0cihj
b25maWcuZ2V0KG1vZHVsZV9uYW1lLCAnaGVhZGVycycpKS5yZXBsYWNlKCc7JywgJyAnKS5zcGxp
dCgpXQorCisKK2RlZiBnZXRfYWxsX3dlYmtpdGRvbV9zeW1ib2xfZmlsZXMoKToKKyAgICBzdGF0
aWNfc3ltYm9sX2ZpbGVzX3BhdGggPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1NvdXJjZScsICdX
ZWJDb3JlJywgJ2JpbmRpbmdzJywgJ2dvYmplY3QnKQorICAgIGdlbmVyYXRlZF9zeW1ib2xfZmls
ZXNfcGF0aCA9IGNvbW1vbi5idWlsZF9wYXRoKCdEZXJpdmVkU291cmNlcycsICd3ZWJraXRkb20n
KQorCisgICAgc3ltYm9sX2ZpbGVzID0gW10KKyAgICBmb3IgaGVhZGVyX25hbWUgaW4gaGVhZGVy
X25hbWVfbGlzdF9mcm9tX2d0a2RvY19jb25maWdfZmlsZSgpOgorICAgICAgICAjIHdlYmtpdGRv
bWRlZmluZXMuaCBkb2Vzbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIHN5bWJvbHMgZmlsZSBhbmQg
d2Via2l0ZG9tLnN5bWJvbHMgaXMgYQorICAgICAgICAjIGZpbGUgY29udGFpbmluZyB0aGUgZXhw
ZWN0ZWQgc3ltYm9scyByZXN1bHRzLgorICAgICAgICBpZiBoZWFkZXJfbmFtZSBpbiAoIndlYmtp
dGRvbS5oIiwgIndlYmtpdGRvbWRlZmluZXMuaCIpOgorICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICBzeW1ib2xfZmlsZSA9IGhlYWRlcl9uYW1lLnJlcGxhY2UoIi5oIiwgIi5zeW1ib2xz
IikKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzdGF0aWNfc3ltYm9sX2ZpbGVzX3BhdGgs
IHN5bWJvbF9maWxlKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAg
ICAgIHN5bWJvbF9maWxlcy5hcHBlbmQocGF0aCkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZ2VuZXJhdGVkX3N5bWJvbF9maWxlc19wYXRoLCBzeW1i
b2xfZmlsZSkKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICBz
eW1ib2xfZmlsZXMuYXBwZW5kKHBhdGgpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBz
eXMuc3RkZXJyLndyaXRlKCJDb3VsZCBub3QgZmluZCBzeW1ib2wgZmlsZSBmb3IgaGVhZGVyOiAl
c1xuIiAlIGhlYWRlcl9uYW1lKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgcmV0dXJuIHN5
bWJvbF9maWxlcwpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDM2NzVi
NDlhOTRjMzkzYjE4MGE5ZTZhODk1YWE2MzY2YTcwYzcyZjYuLjNkZjY2Yjk4MWEyMDBlMjNhOTVj
MmE3NjliNmNlODM1MWM3ZDZiOTYgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0wMy0wMyAgTWFydGluIFJvYmluc29uICA8bXJvYmlu
c29uQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gU2ltcGxpZnkgdGhlIEdPYmplY3QgRE9N
IGJpbmRpbmdzIEFQSSBicmVhayBjaGVjayBpbnRvIG9uZSBzdGVwCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjk1NzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9QbGF0Zm9ybUdUSy5jbWFr
ZTogV2UgZG9uJ3QgbmVlZCB0byBydW4gdGhlIEFQSSBicmVhayBjaGVjayBiZWZvcmUgZ3RrZG9j
IGdlbmVyYXRpb24uCisgICAgICAgIEFkZCB0aGUgY2hlY2sgdG8gJ21ha2UgY2hlY2suJworCiAy
MDE0LTAyLTI4ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXVtDTWFrZV0gRU5BQkxFX05BVklHQVRPUl9DT05URU5UX1VUSUxTIGlzIG1pc3Rh
a2VubHkgZW5hYmxlZCBmb3IgdGhlIENNYWtlIGJ1aWxkCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>