<?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>46764</bug_id>
          
          <creation_ts>2010-09-28 16:27:29 -0700</creation_ts>
          <short_desc>Record bot ID when updating queue status</short_desc>
          <delta_ts>2010-09-29 12:08:01 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Mihai Parparita">mihaip</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>286616</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-28 16:27:29 -0700</bug_when>
    <thetext>Record bot ID when updating queue status</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286617</commentid>
    <comment_count>1</comment_count>
      <attachid>69129</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-28 16:28:35 -0700</bug_when>
    <thetext>Created attachment 69129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286673</commentid>
    <comment_count>2</comment_count>
      <attachid>69129</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-28 17:55:31 -0700</bug_when>
    <thetext>Comment on attachment 69129
Patch

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

Working with you is such a pleasure, Mihai.  Thank you for the patch!

r- because I think we&apos;d end up with Browser() shared between all StatusServer instances (not that there is normally more than one).  Otherwise looks great.

&gt; WebKitTools/QueueStatusServer/model/queuestatus.py:34
&gt; +    bot_id = db.StringProperty()

Will AppEngine automatically migrate the datastore correctly?

&gt; WebKitTools/Scripts/webkitpy/common/net/statusserver.py:45
&gt; +    def __init__(self, host=default_host, browser=Browser(), bot_id=socket.gethostname()):

This is subtly wrong in 2 ways.

1.  foo=bar should be avoided in __init__ because bar will be shared across all instances of the object (at least that&apos;s my understanding).  The recommended pattern is to use foo=None and then in teh body if foo is None set it to the default value.
2.  I think we want to avoid giving the entire dns name?  Or maybe I&apos;m understanding gethostname() incorrectly?  Will that just return amazon-ews-12345 or will it return the full DNS address?

I think we might want to add a global command-line option to set the bot name?  There is already a status-server-host= option which is global and passed to the StatusServer at creation time.

&gt; WebKitTools/Scripts/webkitpy/common/net/statusserver_unittest.py:36
&gt; +class StatusServerTest(unittest.TestCase):

I love that you added StatusServerTest.  We&apos;ve needed this for a long time, but I think been too lazy to mock Browser.

We have a bunch of our mocks dumped in mocktool.py, I can&apos;t remember if there i a MockBrowser there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286675</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-28 18:00:28 -0700</bug_when>
    <thetext>On my laptop:
&gt;&gt;&gt; import socket
&gt;&gt;&gt; socket.gethostname()
&apos;eseidel-macbookpro.local&apos;

I think we probably want these to be explicit names passed on the command line, but I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286684</commentid>
    <comment_count>4</comment_count>
      <attachid>69149</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-28 18:32:30 -0700</bug_when>
    <thetext>Created attachment 69149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286685</commentid>
    <comment_count>5</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-28 18:34:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; WebKitTools/QueueStatusServer/model/queuestatus.py:34
&gt; &gt; +    bot_id = db.StringProperty()
&gt; 
&gt; Will AppEngine automatically migrate the datastore correctly?

Yes, old entities should just have a None for the bot_id (the UI will have to handle that though).
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/net/statusserver.py:45
&gt; &gt; +    def __init__(self, host=default_host, browser=Browser(), bot_id=socket.gethostname()):
&gt; 
&gt; This is subtly wrong in 2 ways.
&gt; 
&gt; 1.  foo=bar should be avoided in __init__ because bar will be shared across all instances of the object (at least that&apos;s my understanding).  The recommended pattern is to use foo=None and then in teh body if foo is None set it to the default value.

Oops, fixed to use None as the default value.

&gt; 2.  I think we want to avoid giving the entire dns name?  Or maybe I&apos;m understanding gethostname() incorrectly?  Will that just return amazon-ews-12345 or will it return the full DNS address?
&gt; 
&gt; I think we might want to add a global command-line option to set the bot name?  There is already a status-server-host= option which is global and passed to the StatusServer at creation time.

Made into a comand-line option.

&gt; I love that you added StatusServerTest.  We&apos;ve needed this for a long time, but I think been too lazy to mock Browser.
&gt; 
&gt; We have a bunch of our mocks dumped in mocktool.py, I can&apos;t remember if there i a MockBrowser there.

There isn&apos;t. There was a MockBrowser in bugzilla_unittest.py that I based mine on. I moved it to mocktool.py and used it in both places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286749</commentid>
    <comment_count>6</comment_count>
      <attachid>69149</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-28 23:40:52 -0700</bug_when>
    <thetext>Comment on attachment 69149
Patch

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

The one think I would change is that we should forward the bot_id to the child process in run_webkit_patch (or wherever we forward the status_host).

&gt; WebKitTools/Scripts/webkitpy/common/net/statusserver_unittest.py:42
&gt; +    def setUp(self):
&gt; +        self.output_capture = OutputCapture()
&gt; +        self.output_capture.capture_output()
&gt; +
&gt; +    def tearDown(self):
&gt; +        self.output_capture.restore_output()

Should we put this code in a base class?  Maybe in the outputcapture package?

&gt; WebKitTools/Scripts/webkitpy/tool/main.py:63
&gt; +        make_option(&quot;--bot-id&quot;, action=&quot;store&quot;, dest=&quot;bot_id&quot;, type=&quot;string&quot;, help=&quot;Identifier for this bot (if multiple bots are running for a queue)&quot;),

Should this be a global option or an option on AbstractQueue?  I guess it makes sense as a global option in case we need to pass it to commands along with status_host.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286765</commentid>
    <comment_count>7</comment_count>
      <attachid>69149</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-29 00:53:57 -0700</bug_when>
    <thetext>Comment on attachment 69149
Patch

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

&gt;&gt; WebKitTools/Scripts/webkitpy/common/net/statusserver_unittest.py:42
&gt;&gt; +    def setUp(self):
&gt;&gt; +        self.output_capture = OutputCapture()
&gt;&gt; +        self.output_capture.capture_output()
&gt;&gt; +
&gt;&gt; +    def tearDown(self):
&gt;&gt; +        self.output_capture.restore_output()
&gt; 
&gt; Should we put this code in a base class?  Maybe in the outputcapture package?

Why discard the output instead of using output_capture.assert_output()?  It&apos;s much stronger to check the output when possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287025</commentid>
    <comment_count>8</comment_count>
      <attachid>69235</attachid>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-29 11:37:01 -0700</bug_when>
    <thetext>Created attachment 69235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287029</commentid>
    <comment_count>9</comment_count>
      <attachid>69235</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-29 11:40:05 -0700</bug_when>
    <thetext>Comment on attachment 69235
Patch

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

&gt; WebKitTools/Scripts/webkitpy/tool/commands/queues_unittest.py:66
&gt; +        tool.status_server.bot_id = &quot;gort&quot;

:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287030</commentid>
    <comment_count>10</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2010-09-29 11:40:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Should we put this code in a base class?  Maybe in the outputcapture package?

Sure, added OutputCaptureTestCaseBase.

&gt; Should this be a global option or an option on AbstractQueue?  I guess it makes sense as a global option in case we need to pass it to commands along with status_host.

Yeah, we should pass it around. Added that.

(In reply to comment #7)
&gt; Why discard the output instead of using output_capture.assert_output()?  It&apos;s much stronger to check the output when possible.

I don&apos;t think we should make the unit tests too rigid, otherwise they&apos;ll break even for changes that shouldn&apos;t affect them. The logging in StausServer.update_status is not the core functionality (the uploading to the server is), therefore checking for it in an unit test doesn&apos;t seem necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287047</commentid>
    <comment_count>11</comment_count>
      <attachid>69235</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 12:07:55 -0700</bug_when>
    <thetext>Comment on attachment 69235
Patch

Clearing flags on attachment: 69235

Committed r68673: &lt;http://trac.webkit.org/changeset/68673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287048</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-29 12:08:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69129</attachid>
            <date>2010-09-28 16:28:35 -0700</date>
            <delta_ts>2010-09-28 18:32:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46764-20100928162834.patch</filename>
            <type>text/plain</type>
            <size>10433</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA5ODVjMjZmY2UxMWU2MjcxYzEwNjExZjY0YzZhZGIyNWZjZDA3NDNjLi4yMmE1NTU1
MGUwNTY3N2JjMmViZTc1MWRkMjhlZjdjZjMzYzk1OTI5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTAtMDktMjggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVjb3JkIGJvdCBJ
RCB3aGVuIHVwZGF0aW5nIHF1ZXVlIHN0YXR1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3NjQKKyAgICAgICAgCisgICAgICAgIFNpbmNlIHdlIG5v
dyBoYXZlIG11bHRpcGxlIGJvdHMgaGFuZGxpbmcgcGF0Y2hlcyBmcm9tIHRoZSBjb21taXQgcXVl
dWUsCisgICAgICAgIHdlIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBzdGF0dXMgdXBkYXRlcyBmcm9t
IHRoZW0sIHNvIHRoYXQgd2UgY2FuIGdyb3VwCisgICAgICAgIHRoZSBxdWV1ZSBzdGF0dXMgcGFn
ZSBpbiBhIGxlc3MgY29uZnVzaW5nIHdheS4KKworICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVy
L2hhbmRsZXJzL3VwZGF0ZXN0YXR1cy5weToKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci9t
b2RlbC9xdWV1ZXN0YXR1cy5weToKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0
ZXMvdXBkYXRlc3RhdHVzLmh0bWw6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
bmV0L3N0YXR1c3NlcnZlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvc3RhdHVzc2VydmVyX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKwogMjAxMC0wOS0yOCAgQWRhbSBS
b2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIGZvciB0aGUgYWRkaXRp
b24gb2YgV0tQYWdlVUlDbGllbnQ6OmRpZE5vdEhhbmRsZUtleUV2ZW50CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91cGRhdGVzdGF0dXMucHkgYi9X
ZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91cGRhdGVzdGF0dXMucHkKaW5k
ZXggODk4NThiNjk5MWJmYzAyOTAzZmNhYmRmMmY0MmQ5ODkzNTM4NDU3My4uN2YyN2NjNjE4NWIz
YzM4MzU3NWJiNjI4YjkwYTE0NTU4ZWZkYzFlMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvUXVl
dWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3RhdHVzLnB5CisrKyBiL1dlYktpdFRvb2xz
L1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0ZXN0YXR1cy5weQpAQCAtNDksNyArNDks
OSBAQCBjbGFzcyBVcGRhdGVTdGF0dXMoVXBkYXRlQmFzZSk6CiAgICAgICAgIGJ1Z19pZCA9IHNl
bGYuX2ludF9mcm9tX3JlcXVlc3QoImJ1Z19pZCIpCiAgICAgICAgIHBhdGNoX2lkID0gc2VsZi5f
aW50X2Zyb21fcmVxdWVzdCgicGF0Y2hfaWQiKQogICAgICAgICBxdWV1ZV9uYW1lID0gc2VsZi5y
ZXF1ZXN0LmdldCgicXVldWVfbmFtZSIpCisgICAgICAgIGJvdF9pZCA9IHNlbGYucmVxdWVzdC5n
ZXQoImJvdF9pZCIpCiAgICAgICAgIHF1ZXVlX3N0YXR1cy5xdWV1ZV9uYW1lID0gcXVldWVfbmFt
ZQorICAgICAgICBxdWV1ZV9zdGF0dXMuYm90X2lkID0gYm90X2lkCiAgICAgICAgIHF1ZXVlX3N0
YXR1cy5hY3RpdmVfYnVnX2lkID0gYnVnX2lkCiAgICAgICAgIHF1ZXVlX3N0YXR1cy5hY3RpdmVf
cGF0Y2hfaWQgPSBwYXRjaF9pZAogICAgICAgICBxdWV1ZV9zdGF0dXMubWVzc2FnZSA9IHNlbGYu
cmVxdWVzdC5nZXQoInN0YXR1cyIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1
c1NlcnZlci9tb2RlbC9xdWV1ZXN0YXR1cy5weSBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2Vy
dmVyL21vZGVsL3F1ZXVlc3RhdHVzLnB5CmluZGV4IDNkN2U1OTk1NjAxMWYwMGVmZjkxMTM2NWJl
Y2UwNDk2YmQ4NDg5NTUuLmQ3ZGFlNDUxMjcwN2RkNWM4ZTZlMWYyMzRjYjAzMzQwYjUyZDdhMGIg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlc3Rh
dHVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlc3Rh
dHVzLnB5CkBAIC0zMSw2ICszMSw3IEBAIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0
IGRiCiBjbGFzcyBRdWV1ZVN0YXR1cyhkYi5Nb2RlbCk6CiAgICAgYXV0aG9yID0gZGIuVXNlclBy
b3BlcnR5KCkKICAgICBxdWV1ZV9uYW1lID0gZGIuU3RyaW5nUHJvcGVydHkoKQorICAgIGJvdF9p
ZCA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKICAgICBhY3RpdmVfYnVnX2lkID0gZGIuSW50ZWdlclBy
b3BlcnR5KCkKICAgICBhY3RpdmVfcGF0Y2hfaWQgPSBkYi5JbnRlZ2VyUHJvcGVydHkoKQogICAg
IG1lc3NhZ2UgPSBkYi5TdHJpbmdQcm9wZXJ0eShtdWx0aWxpbmU9VHJ1ZSkKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdGF0dXMuaHRt
bCBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdGF0dXMu
aHRtbAppbmRleCA5MzQzYzYwMDE5ZWE1MDc2N2Y5MTM3MWQxMTYyYjBlOWM5ZTM5ZGJjLi4wZjk4
YmE0ZGJhMmFiYjQ1YWVhYmFiYTYxYTRmOWYyY2U1NjYzMTM2IDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRlc3RhdHVzLmh0bWwKKysrIGIv
V2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3VwZGF0ZXN0YXR1cy5odG1s
CkBAIC0xLDYgKzEsMTAgQEAKIDxmb3JtIG5hbWU9InVwZGF0ZV9zdGF0dXMiIGVuY3R5cGU9Im11
bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0icG9zdCI+CiBVcGRhdGUgc3RhdHVzIGZvciBhIHF1
ZXVlOiA8aW5wdXQgbmFtZT0icXVldWVfbmFtZSI+CiAgPGRpdj4KKyAgICAgQm90IElkOgorICAg
IDxpbnB1dCBuYW1lPSJib3RfaWQiPgorIDwvZGl2PgorIDxkaXY+CiAgICAgIEFjdGl2ZSBCdWcg
SWQ6CiAgICAgPGlucHV0IG5hbWU9ImJ1Z19pZCI+CiAgPC9kaXY+CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQppbmRl
eCA1NzM5MGI4OWMzMTQzMDVmYWJhYzM2NzZiNWExNTgxZmZhMTI0NzRhLi4yMzU5NzhkZjI1Mzc4
ZjU4NDhkMDE3YWE2Zjg2ODRhY2M5OWJiNjQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKQEAgLTMyLDYgKzMy
LDcgQEAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQubWVjaGFuaXplIGlt
cG9ydCBCcm93c2VyCiBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBv
cnQgQmVhdXRpZnVsU291cAogCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHNvY2tldAogaW1wb3J0
IHVybGxpYjIKIAogCkBAIC00MSw5ICs0MiwxMCBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
IndlYmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVyIikKIGNsYXNzIFN0YXR1c1NlcnZlcjoK
ICAgICBkZWZhdWx0X2hvc3QgPSAicXVldWVzLndlYmtpdC5vcmciCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgaG9zdD1kZWZhdWx0X2hvc3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
PWRlZmF1bHRfaG9zdCwgYnJvd3Nlcj1Ccm93c2VyKCksIGJvdF9pZD1zb2NrZXQuZ2V0aG9zdG5h
bWUoKSk6CiAgICAgICAgIHNlbGYuc2V0X2hvc3QoaG9zdCkKLSAgICAgICAgc2VsZi5icm93c2Vy
ID0gQnJvd3NlcigpCisgICAgICAgIHNlbGYuX2Jyb3dzZXIgPSBicm93c2VyCisgICAgICAgIHNl
bGYuX2JvdF9pZCA9IGJvdF9pZAogCiAgICAgZGVmIHNldF9ob3N0KHNlbGYsIGhvc3QpOgogICAg
ICAgICBzZWxmLmhvc3QgPSBob3N0CkBAIC01NiwxNCArNTgsMTQgQEAgY2xhc3MgU3RhdHVzU2Vy
dmVyOgogICAgICAgICBpZiBub3QgcGF0Y2g6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAg
aWYgcGF0Y2guYnVnX2lkKCk6Ci0gICAgICAgICAgICBzZWxmLmJyb3dzZXJbImJ1Z19pZCJdID0g
dW5pY29kZShwYXRjaC5idWdfaWQoKSkKKyAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJbImJ1Z19p
ZCJdID0gdW5pY29kZShwYXRjaC5idWdfaWQoKSkKICAgICAgICAgaWYgcGF0Y2guaWQoKToKLSAg
ICAgICAgICAgIHNlbGYuYnJvd3NlclsicGF0Y2hfaWQiXSA9IHVuaWNvZGUocGF0Y2guaWQoKSkK
KyAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXJbInBhdGNoX2lkIl0gPSB1bmljb2RlKHBhdGNoLmlk
KCkpCiAKICAgICBkZWYgX2FkZF9yZXN1bHRzX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlKToKICAg
ICAgICAgaWYgbm90IHJlc3VsdHNfZmlsZToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBz
ZWxmLmJyb3dzZXIuYWRkX2ZpbGUocmVzdWx0c19maWxlLCAidGV4dC9wbGFpbiIsICJyZXN1bHRz
LnR4dCIsICdyZXN1bHRzX2ZpbGUnKQorICAgICAgICBzZWxmLl9icm93c2VyLmFkZF9maWxlKHJl
c3VsdHNfZmlsZSwgInRleHQvcGxhaW4iLCAicmVzdWx0cy50eHQiLCAncmVzdWx0c19maWxlJykK
IAogICAgIGRlZiBfcG9zdF9zdGF0dXNfdG9fc2VydmVyKHNlbGYsIHF1ZXVlX25hbWUsIHN0YXR1
cywgcGF0Y2gsIHJlc3VsdHNfZmlsZSk6CiAgICAgICAgIGlmIHJlc3VsdHNfZmlsZToKQEAgLTcx
LDMwICs3MywzMSBAQCBjbGFzcyBTdGF0dXNTZXJ2ZXI6CiAgICAgICAgICAgICByZXN1bHRzX2Zp
bGUuc2VlaygwKQogCiAgICAgICAgIHVwZGF0ZV9zdGF0dXNfdXJsID0gIiVzL3VwZGF0ZS1zdGF0
dXMiICUgc2VsZi51cmwKLSAgICAgICAgc2VsZi5icm93c2VyLm9wZW4odXBkYXRlX3N0YXR1c191
cmwpCi0gICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1cGRhdGVfc3RhdHVz
IikKLSAgICAgICAgc2VsZi5icm93c2VyWyJxdWV1ZV9uYW1lIl0gPSBxdWV1ZV9uYW1lCisgICAg
ICAgIHNlbGYuX2Jyb3dzZXIub3Blbih1cGRhdGVfc3RhdHVzX3VybCkKKyAgICAgICAgc2VsZi5f
YnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1cGRhdGVfc3RhdHVzIikKKyAgICAgICAgc2VsZi5f
YnJvd3NlclsicXVldWVfbmFtZSJdID0gcXVldWVfbmFtZQorICAgICAgICBzZWxmLl9icm93c2Vy
WyJib3RfaWQiXSA9IHNlbGYuX2JvdF9pZAogICAgICAgICBzZWxmLl9hZGRfcGF0Y2gocGF0Y2gp
Ci0gICAgICAgIHNlbGYuYnJvd3Nlclsic3RhdHVzIl0gPSBzdGF0dXMKKyAgICAgICAgc2VsZi5f
YnJvd3Nlclsic3RhdHVzIl0gPSBzdGF0dXMKICAgICAgICAgc2VsZi5fYWRkX3Jlc3VsdHNfZmls
ZShyZXN1bHRzX2ZpbGUpCi0gICAgICAgIHJldHVybiBzZWxmLmJyb3dzZXIuc3VibWl0KCkucmVh
ZCgpICMgVGhpcyBpcyB0aGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgc3RhdHVzIG9iamVjdC4K
KyAgICAgICAgcmV0dXJuIHNlbGYuX2Jyb3dzZXIuc3VibWl0KCkucmVhZCgpICAjIFRoaXMgaXMg
dGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHN0YXR1cyBvYmplY3QuCiAKICAgICBkZWYgX3Bv
c3Rfc3ZuX3JldmlzaW9uX3RvX3NlcnZlcihzZWxmLCBzdm5fcmV2aXNpb25fbnVtYmVyLCBicm9r
ZW5fYm90KToKICAgICAgICAgdXBkYXRlX3N2bl9yZXZpc2lvbl91cmwgPSAiJXMvdXBkYXRlLXN2
bi1yZXZpc2lvbiIgJSBzZWxmLnVybAotICAgICAgICBzZWxmLmJyb3dzZXIub3Blbih1cGRhdGVf
c3ZuX3JldmlzaW9uX3VybCkKLSAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9
InVwZGF0ZV9zdm5fcmV2aXNpb24iKQotICAgICAgICBzZWxmLmJyb3dzZXJbIm51bWJlciJdID0g
dW5pY29kZShzdm5fcmV2aXNpb25fbnVtYmVyKQotICAgICAgICBzZWxmLmJyb3dzZXJbImJyb2tl
bl9ib3QiXSA9IGJyb2tlbl9ib3QKLSAgICAgICAgcmV0dXJuIHNlbGYuYnJvd3Nlci5zdWJtaXQo
KS5yZWFkKCkKKyAgICAgICAgc2VsZi5fYnJvd3Nlci5vcGVuKHVwZGF0ZV9zdm5fcmV2aXNpb25f
dXJsKQorICAgICAgICBzZWxmLl9icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9InVwZGF0ZV9zdm5f
cmV2aXNpb24iKQorICAgICAgICBzZWxmLl9icm93c2VyWyJudW1iZXIiXSA9IHVuaWNvZGUoc3Zu
X3JldmlzaW9uX251bWJlcikKKyAgICAgICAgc2VsZi5fYnJvd3NlclsiYnJva2VuX2JvdCJdID0g
YnJva2VuX2JvdAorICAgICAgICByZXR1cm4gc2VsZi5fYnJvd3Nlci5zdWJtaXQoKS5yZWFkKCkK
IAogICAgIGRlZiBfcG9zdF93b3JrX2l0ZW1zX3RvX3NlcnZlcihzZWxmLCBxdWV1ZV9uYW1lLCB3
b3JrX2l0ZW1zKToKICAgICAgICAgdXBkYXRlX3dvcmtfaXRlbXNfdXJsID0gIiVzL3VwZGF0ZS13
b3JrLWl0ZW1zIiAlIHNlbGYudXJsCi0gICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHVwZGF0ZV93
b3JrX2l0ZW1zX3VybCkKLSAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9InVw
ZGF0ZV93b3JrX2l0ZW1zIikKLSAgICAgICAgc2VsZi5icm93c2VyWyJxdWV1ZV9uYW1lIl0gPSBx
dWV1ZV9uYW1lCisgICAgICAgIHNlbGYuX2Jyb3dzZXIub3Blbih1cGRhdGVfd29ya19pdGVtc191
cmwpCisgICAgICAgIHNlbGYuX2Jyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0idXBkYXRlX3dvcmtf
aXRlbXMiKQorICAgICAgICBzZWxmLl9icm93c2VyWyJxdWV1ZV9uYW1lIl0gPSBxdWV1ZV9uYW1l
CiAgICAgICAgIHdvcmtfaXRlbXMgPSBtYXAodW5pY29kZSwgd29ya19pdGVtcykgICMgLmpvaW4g
ZXhwZWN0cyBzdHJpbmdzCi0gICAgICAgIHNlbGYuYnJvd3Nlclsid29ya19pdGVtcyJdID0gIiAi
LmpvaW4od29ya19pdGVtcykKLSAgICAgICAgcmV0dXJuIHNlbGYuYnJvd3Nlci5zdWJtaXQoKS5y
ZWFkKCkKKyAgICAgICAgc2VsZi5fYnJvd3Nlclsid29ya19pdGVtcyJdID0gIiAiLmpvaW4od29y
a19pdGVtcykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Jyb3dzZXIuc3VibWl0KCkucmVhZCgpCiAK
ICAgICBkZWYgbmV4dF93b3JrX2l0ZW0oc2VsZiwgcXVldWVfbmFtZSk6CiAgICAgICAgIF9sb2cu
ZGVidWcoIkZldGNoaW5nIG5leHQgd29yayBpdGVtIGZvciAlcyIgJSBxdWV1ZV9uYW1lKQpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3Nl
cnZlcl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNiYWJjZTJhNTY0MzA1NGQw
ZDY3NmM2MGNjMzBlNzFjNTEzZmMxYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfdW5pdHRlc3QucHkKQEAgLTAs
MCArMSw2NSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQuc3RhdHVzc2VydmVyIGltcG9ydCBTdGF0dXNTZXJ2ZXIKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Citmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jaworCisKK2NsYXNzIFN0
YXR1c1NlcnZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNsYXNzIE1vY2tCcm93c2Vy
KG9iamVjdCk6CisgICAgICAgIHBhcmFtcyA9IHt9CisKKyAgICAgICAgZGVmIG9wZW4oc2VsZiwg
dXJsKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkZWYgc2VsZWN0X2Zvcm0oc2VsZiwg
bmFtZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYs
IGtleSwgdmFsdWUpOgorICAgICAgICAgICAgc2VsZi5wYXJhbXNba2V5XSA9IHZhbHVlCisKKyAg
ICAgICAgZGVmIHN1Ym1pdChzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBNb2NrKGZpbGUpCisK
KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYub3V0cHV0X2NhcHR1cmUgPSBPdXRw
dXRDYXB0dXJlKCkKKyAgICAgICAgc2VsZi5vdXRwdXRfY2FwdHVyZS5jYXB0dXJlX291dHB1dCgp
CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYub3V0cHV0X2NhcHR1cmUu
cmVzdG9yZV9vdXRwdXQoKQorCisgICAgZGVmIHRlc3RfdXJsX2Zvcl9pc3N1ZShzZWxmKToKKyAg
ICAgICAgbW9ja19icm93c2VyID0gU3RhdHVzU2VydmVyVGVzdC5Nb2NrQnJvd3NlcigpCisgICAg
ICAgIHN0YXR1c19zZXJ2ZXIgPSBTdGF0dXNTZXJ2ZXIoYnJvd3Nlcj1tb2NrX2Jyb3dzZXIsIGJv
dF9pZD0nMTIzJykKKyAgICAgICAgc3RhdHVzX3NlcnZlci51cGRhdGVfc3RhdHVzKCdxdWV1ZSBu
YW1lJywgJ3RoZSBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdxdWV1ZSBuYW1l
JywgbW9ja19icm93c2VyLnBhcmFtc1sncXVldWVfbmFtZSddKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCd0aGUgc3RhdHVzJywgbW9ja19icm93c2VyLnBhcmFtc1snc3RhdHVzJ10pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEyMycsIG1vY2tfYnJvd3Nlci5wYXJhbXNbJ2JvdF9pZCdd
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69149</attachid>
            <date>2010-09-28 18:32:30 -0700</date>
            <delta_ts>2010-09-29 11:36:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46764-20100928183229.patch</filename>
            <type>text/plain</type>
            <size>14055</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjODI4YzZjNWJmZjQwMGRmYjUwMWM1Zjk2YmQ0YzBmNDQ2ZTViOGRmLi41Yjc0MWE4
YmVkYmJmYjE0N2FkOTNmNTUzYzlmN2RmMmFjMzRjODFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDktMjggIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVjb3JkIGJvdCBJ
RCB3aGVuIHVwZGF0aW5nIHF1ZXVlIHN0YXR1cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY3NjQKKyAgICAgICAgCisgICAgICAgIFNpbmNlIHdlIG5v
dyBoYXZlIG11bHRpcGxlIGJvdHMgaGFuZGxpbmcgcGF0Y2hlcyBmcm9tIHRoZSBjb21taXQgcXVl
dWUsCisgICAgICAgIHdlIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSBzdGF0dXMgdXBkYXRlcyBmcm9t
IHRoZW0sIHNvIHRoYXQgd2UgY2FuIGdyb3VwCisgICAgICAgIHRoZSBxdWV1ZSBzdGF0dXMgcGFn
ZSBpbiBhIGxlc3MgY29uZnVzaW5nIHdheS4KKworICAgICAgICAqIFF1ZXVlU3RhdHVzU2VydmVy
L2hhbmRsZXJzL3VwZGF0ZXN0YXR1cy5weTogQWNjZXB0IGJvdF9pZCBhcyBpbnB1dAorICAgICAg
ICAqIFF1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVlc3RhdHVzLnB5OiBBZGQgYm90X2lkIHBy
b3BlcnR5CisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3VwZGF0ZXN0YXR1
cy5odG1sOiBBZGQgYm90X2lkIGlucHV0CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBFeHRyYWN0IE1vY2tCcm93c2VyCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weTogQWRkIGJvdF9p
ZAorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXJfdW5p
dHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tYWluLnB5
OiBBZGQgLS1ib3QtaWQKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wu
cHk6IEFkZCBNb2NrQnJvd3NlcgorCiAyMDEwLTA5LTI4ICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91cGRhdGVzdGF0dXMucHkg
Yi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9oYW5kbGVycy91cGRhdGVzdGF0dXMucHkK
aW5kZXggODk4NThiNjk5MWJmYzAyOTAzZmNhYmRmMmY0MmQ5ODkzNTM4NDU3My4uN2YyN2NjNjE4
NWIzYzM4MzU3NWJiNjI4YjkwYTE0NTU4ZWZkYzFlMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
UXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3RhdHVzLnB5CisrKyBiL1dlYktpdFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL2hhbmRsZXJzL3VwZGF0ZXN0YXR1cy5weQpAQCAtNDksNyAr
NDksOSBAQCBjbGFzcyBVcGRhdGVTdGF0dXMoVXBkYXRlQmFzZSk6CiAgICAgICAgIGJ1Z19pZCA9
IHNlbGYuX2ludF9mcm9tX3JlcXVlc3QoImJ1Z19pZCIpCiAgICAgICAgIHBhdGNoX2lkID0gc2Vs
Zi5faW50X2Zyb21fcmVxdWVzdCgicGF0Y2hfaWQiKQogICAgICAgICBxdWV1ZV9uYW1lID0gc2Vs
Zi5yZXF1ZXN0LmdldCgicXVldWVfbmFtZSIpCisgICAgICAgIGJvdF9pZCA9IHNlbGYucmVxdWVz
dC5nZXQoImJvdF9pZCIpCiAgICAgICAgIHF1ZXVlX3N0YXR1cy5xdWV1ZV9uYW1lID0gcXVldWVf
bmFtZQorICAgICAgICBxdWV1ZV9zdGF0dXMuYm90X2lkID0gYm90X2lkCiAgICAgICAgIHF1ZXVl
X3N0YXR1cy5hY3RpdmVfYnVnX2lkID0gYnVnX2lkCiAgICAgICAgIHF1ZXVlX3N0YXR1cy5hY3Rp
dmVfcGF0Y2hfaWQgPSBwYXRjaF9pZAogICAgICAgICBxdWV1ZV9zdGF0dXMubWVzc2FnZSA9IHNl
bGYucmVxdWVzdC5nZXQoInN0YXR1cyIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXN0YXR1cy5weSBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL21vZGVsL3F1ZXVlc3RhdHVzLnB5CmluZGV4IDNkN2U1OTk1NjAxMWYwMGVmZjkxMTM2
NWJlY2UwNDk2YmQ4NDg5NTUuLmQ3ZGFlNDUxMjcwN2RkNWM4ZTZlMWYyMzRjYjAzMzQwYjUyZDdh
MGIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVl
c3RhdHVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL21vZGVsL3F1ZXVl
c3RhdHVzLnB5CkBAIC0zMSw2ICszMSw3IEBAIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1w
b3J0IGRiCiBjbGFzcyBRdWV1ZVN0YXR1cyhkYi5Nb2RlbCk6CiAgICAgYXV0aG9yID0gZGIuVXNl
clByb3BlcnR5KCkKICAgICBxdWV1ZV9uYW1lID0gZGIuU3RyaW5nUHJvcGVydHkoKQorICAgIGJv
dF9pZCA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKICAgICBhY3RpdmVfYnVnX2lkID0gZGIuSW50ZWdl
clByb3BlcnR5KCkKICAgICBhY3RpdmVfcGF0Y2hfaWQgPSBkYi5JbnRlZ2VyUHJvcGVydHkoKQog
ICAgIG1lc3NhZ2UgPSBkYi5TdHJpbmdQcm9wZXJ0eShtdWx0aWxpbmU9VHJ1ZSkKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdGF0dXMu
aHRtbCBiL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdGF0
dXMuaHRtbAppbmRleCA5MzQzYzYwMDE5ZWE1MDc2N2Y5MTM3MWQxMTYyYjBlOWM5ZTM5ZGJjLi4w
Zjk4YmE0ZGJhMmFiYjQ1YWVhYmFiYTYxYTRmOWYyY2U1NjYzMTM2IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRlc3RhdHVzLmh0bWwKKysr
IGIvV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3VwZGF0ZXN0YXR1cy5o
dG1sCkBAIC0xLDYgKzEsMTAgQEAKIDxmb3JtIG5hbWU9InVwZGF0ZV9zdGF0dXMiIGVuY3R5cGU9
Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0icG9zdCI+CiBVcGRhdGUgc3RhdHVzIGZvciBh
IHF1ZXVlOiA8aW5wdXQgbmFtZT0icXVldWVfbmFtZSI+CiAgPGRpdj4KKyAgICAgQm90IElkOgor
ICAgIDxpbnB1dCBuYW1lPSJib3RfaWQiPgorIDwvZGl2PgorIDxkaXY+CiAgICAgIEFjdGl2ZSBC
dWcgSWQ6CiAgICAgPGlucHV0IG5hbWU9ImJ1Z19pZCI+CiAgPC9kaXY+CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGFfdW5pdHRlc3Qu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGFfdW5p
dHRlc3QucHkKaW5kZXggMzJmMjNjZDYxOGU1NDEyZmEyY2E5ZTBmOGU1NjZmYzRiOWM1ZDBiYi4u
M2E0NTRkNmYwZjVlY2Y0ZjkxMDc3NDkxZjdmYTljNWM1MTkxODhiYiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYV91
bml0dGVzdC5weQpAQCAtMzMsMjQgKzMzLDExIEBAIGltcG9ydCBkYXRldGltZQogZnJvbSB3ZWJr
aXRweS5jb21tb24uY29uZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIFJldmll
d2VyLCBDb21taXR0ZXIKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQg
QnVnemlsbGEsIEJ1Z3ppbGxhUXVlcmllcywgcGFyc2VfYnVnX2lkLCBDb21taXR0ZXJWYWxpZGF0
b3IsIEJ1ZwogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0
IE91dHB1dENhcHR1cmUKK2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0Jy
b3dzZXIKIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHdl
YmtpdHB5LnRoaXJkcGFydHkuQmVhdXRpZnVsU291cCBpbXBvcnQgQmVhdXRpZnVsU291cAogCiAK
LWNsYXNzIE1vY2tCcm93c2VyKG9iamVjdCk6Ci0gICAgZGVmIG9wZW4oc2VsZiwgdXJsKToKLSAg
ICAgICAgcGFzcwotCi0gICAgZGVmIHNlbGVjdF9mb3JtKHNlbGYsIG5hbWUpOgotICAgICAgICBw
YXNzCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAgICAgIHBh
c3MKLQotICAgIGRlZiBzdWJtaXQoc2VsZik6Ci0gICAgICAgIHBhc3MKLQotCiBjbGFzcyBCdWdU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9pc191bmFzc2lnbmVkKHNlbGYp
OgogICAgICAgICBmb3IgZW1haWwgaW4gQnVnLnVuYXNzaWduZWRfZW1haWxzOgpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIu
cHkKaW5kZXggNTczOTBiODljMzE0MzA1ZmFiYWMzNjc2YjVhMTU4MWZmYTEyNDc0YS4uNjc4YTEx
YTlhMmE4MzFlN2RlNjlmYWM0NzM4NDlhMWNiNDM2ZTM3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5CkBAIC00
MSwxNCArNDEsMTggQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRweS5jb21tb24u
bmV0LnN0YXR1c3NlcnZlciIpCiBjbGFzcyBTdGF0dXNTZXJ2ZXI6CiAgICAgZGVmYXVsdF9ob3N0
ID0gInF1ZXVlcy53ZWJraXQub3JnIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9ZGVm
YXVsdF9ob3N0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD1kZWZhdWx0X2hvc3QsIGJy
b3dzZXI9Tm9uZSwgYm90X2lkPU5vbmUpOgogICAgICAgICBzZWxmLnNldF9ob3N0KGhvc3QpCi0g
ICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQorICAgICAgICBzZWxmLl9icm93c2VyID0g
YnJvd3NlciBvciBCcm93c2VyKCkKKyAgICAgICAgc2VsZi5zZXRfYm90X2lkKGJvdF9pZCkKIAog
ICAgIGRlZiBzZXRfaG9zdChzZWxmLCBob3N0KToKICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAog
ICAgICAgICBzZWxmLnVybCA9ICJodHRwOi8vJXMiICUgc2VsZi5ob3N0CiAKKyAgICBkZWYgc2V0
X2JvdF9pZChzZWxmLCBib3RfaWQpOgorICAgICAgICBzZWxmLl9ib3RfaWQgPSBib3RfaWQKKwog
ICAgIGRlZiByZXN1bHRzX3VybF9mb3Jfc3RhdHVzKHNlbGYsIHN0YXR1c19pZCk6CiAgICAgICAg
IHJldHVybiAiJXMvcmVzdWx0cy8lcyIgJSAoc2VsZi51cmwsIHN0YXR1c19pZCkKIApAQCAtNTYs
MTQgKzYwLDE0IEBAIGNsYXNzIFN0YXR1c1NlcnZlcjoKICAgICAgICAgaWYgbm90IHBhdGNoOgog
ICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIHBhdGNoLmJ1Z19pZCgpOgotICAgICAgICAg
ICAgc2VsZi5icm93c2VyWyJidWdfaWQiXSA9IHVuaWNvZGUocGF0Y2guYnVnX2lkKCkpCisgICAg
ICAgICAgICBzZWxmLl9icm93c2VyWyJidWdfaWQiXSA9IHVuaWNvZGUocGF0Y2guYnVnX2lkKCkp
CiAgICAgICAgIGlmIHBhdGNoLmlkKCk6Ci0gICAgICAgICAgICBzZWxmLmJyb3dzZXJbInBhdGNo
X2lkIl0gPSB1bmljb2RlKHBhdGNoLmlkKCkpCisgICAgICAgICAgICBzZWxmLl9icm93c2VyWyJw
YXRjaF9pZCJdID0gdW5pY29kZShwYXRjaC5pZCgpKQogCiAgICAgZGVmIF9hZGRfcmVzdWx0c19m
aWxlKHNlbGYsIHJlc3VsdHNfZmlsZSk6CiAgICAgICAgIGlmIG5vdCByZXN1bHRzX2ZpbGU6CiAg
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5icm93c2VyLmFkZF9maWxlKHJlc3VsdHNf
ZmlsZSwgInRleHQvcGxhaW4iLCAicmVzdWx0cy50eHQiLCAncmVzdWx0c19maWxlJykKKyAgICAg
ICAgc2VsZi5fYnJvd3Nlci5hZGRfZmlsZShyZXN1bHRzX2ZpbGUsICJ0ZXh0L3BsYWluIiwgInJl
c3VsdHMudHh0IiwgJ3Jlc3VsdHNfZmlsZScpCiAKICAgICBkZWYgX3Bvc3Rfc3RhdHVzX3RvX3Nl
cnZlcihzZWxmLCBxdWV1ZV9uYW1lLCBzdGF0dXMsIHBhdGNoLCByZXN1bHRzX2ZpbGUpOgogICAg
ICAgICBpZiByZXN1bHRzX2ZpbGU6CkBAIC03MSwzMCArNzUsMzIgQEAgY2xhc3MgU3RhdHVzU2Vy
dmVyOgogICAgICAgICAgICAgcmVzdWx0c19maWxlLnNlZWsoMCkKIAogICAgICAgICB1cGRhdGVf
c3RhdHVzX3VybCA9ICIlcy91cGRhdGUtc3RhdHVzIiAlIHNlbGYudXJsCi0gICAgICAgIHNlbGYu
YnJvd3Nlci5vcGVuKHVwZGF0ZV9zdGF0dXNfdXJsKQotICAgICAgICBzZWxmLmJyb3dzZXIuc2Vs
ZWN0X2Zvcm0obmFtZT0idXBkYXRlX3N0YXR1cyIpCi0gICAgICAgIHNlbGYuYnJvd3NlclsicXVl
dWVfbmFtZSJdID0gcXVldWVfbmFtZQorICAgICAgICBzZWxmLl9icm93c2VyLm9wZW4odXBkYXRl
X3N0YXR1c191cmwpCisgICAgICAgIHNlbGYuX2Jyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0idXBk
YXRlX3N0YXR1cyIpCisgICAgICAgIHNlbGYuX2Jyb3dzZXJbInF1ZXVlX25hbWUiXSA9IHF1ZXVl
X25hbWUKKyAgICAgICAgaWYgc2VsZi5fYm90X2lkOgorICAgICAgICAgICAgc2VsZi5fYnJvd3Nl
clsiYm90X2lkIl0gPSBzZWxmLl9ib3RfaWQKICAgICAgICAgc2VsZi5fYWRkX3BhdGNoKHBhdGNo
KQotICAgICAgICBzZWxmLmJyb3dzZXJbInN0YXR1cyJdID0gc3RhdHVzCisgICAgICAgIHNlbGYu
X2Jyb3dzZXJbInN0YXR1cyJdID0gc3RhdHVzCiAgICAgICAgIHNlbGYuX2FkZF9yZXN1bHRzX2Zp
bGUocmVzdWx0c19maWxlKQotICAgICAgICByZXR1cm4gc2VsZi5icm93c2VyLnN1Ym1pdCgpLnJl
YWQoKSAjIFRoaXMgaXMgdGhlIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHN0YXR1cyBvYmplY3Qu
CisgICAgICAgIHJldHVybiBzZWxmLl9icm93c2VyLnN1Ym1pdCgpLnJlYWQoKSAgIyBUaGlzIGlz
IHRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzdGF0dXMgb2JqZWN0LgogCiAgICAgZGVmIF9w
b3N0X3N2bl9yZXZpc2lvbl90b19zZXJ2ZXIoc2VsZiwgc3ZuX3JldmlzaW9uX251bWJlciwgYnJv
a2VuX2JvdCk6CiAgICAgICAgIHVwZGF0ZV9zdm5fcmV2aXNpb25fdXJsID0gIiVzL3VwZGF0ZS1z
dm4tcmV2aXNpb24iICUgc2VsZi51cmwKLSAgICAgICAgc2VsZi5icm93c2VyLm9wZW4odXBkYXRl
X3N2bl9yZXZpc2lvbl91cmwpCi0gICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1l
PSJ1cGRhdGVfc3ZuX3JldmlzaW9uIikKLSAgICAgICAgc2VsZi5icm93c2VyWyJudW1iZXIiXSA9
IHVuaWNvZGUoc3ZuX3JldmlzaW9uX251bWJlcikKLSAgICAgICAgc2VsZi5icm93c2VyWyJicm9r
ZW5fYm90Il0gPSBicm9rZW5fYm90Ci0gICAgICAgIHJldHVybiBzZWxmLmJyb3dzZXIuc3VibWl0
KCkucmVhZCgpCisgICAgICAgIHNlbGYuX2Jyb3dzZXIub3Blbih1cGRhdGVfc3ZuX3JldmlzaW9u
X3VybCkKKyAgICAgICAgc2VsZi5fYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1cGRhdGVfc3Zu
X3JldmlzaW9uIikKKyAgICAgICAgc2VsZi5fYnJvd3NlclsibnVtYmVyIl0gPSB1bmljb2RlKHN2
bl9yZXZpc2lvbl9udW1iZXIpCisgICAgICAgIHNlbGYuX2Jyb3dzZXJbImJyb2tlbl9ib3QiXSA9
IGJyb2tlbl9ib3QKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Jyb3dzZXIuc3VibWl0KCkucmVhZCgp
CiAKICAgICBkZWYgX3Bvc3Rfd29ya19pdGVtc190b19zZXJ2ZXIoc2VsZiwgcXVldWVfbmFtZSwg
d29ya19pdGVtcyk6CiAgICAgICAgIHVwZGF0ZV93b3JrX2l0ZW1zX3VybCA9ICIlcy91cGRhdGUt
d29yay1pdGVtcyIgJSBzZWxmLnVybAotICAgICAgICBzZWxmLmJyb3dzZXIub3Blbih1cGRhdGVf
d29ya19pdGVtc191cmwpCi0gICAgICAgIHNlbGYuYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1
cGRhdGVfd29ya19pdGVtcyIpCi0gICAgICAgIHNlbGYuYnJvd3NlclsicXVldWVfbmFtZSJdID0g
cXVldWVfbmFtZQorICAgICAgICBzZWxmLl9icm93c2VyLm9wZW4odXBkYXRlX3dvcmtfaXRlbXNf
dXJsKQorICAgICAgICBzZWxmLl9icm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9InVwZGF0ZV93b3Jr
X2l0ZW1zIikKKyAgICAgICAgc2VsZi5fYnJvd3NlclsicXVldWVfbmFtZSJdID0gcXVldWVfbmFt
ZQogICAgICAgICB3b3JrX2l0ZW1zID0gbWFwKHVuaWNvZGUsIHdvcmtfaXRlbXMpICAjIC5qb2lu
IGV4cGVjdHMgc3RyaW5ncwotICAgICAgICBzZWxmLmJyb3dzZXJbIndvcmtfaXRlbXMiXSA9ICIg
Ii5qb2luKHdvcmtfaXRlbXMpCi0gICAgICAgIHJldHVybiBzZWxmLmJyb3dzZXIuc3VibWl0KCku
cmVhZCgpCisgICAgICAgIHNlbGYuX2Jyb3dzZXJbIndvcmtfaXRlbXMiXSA9ICIgIi5qb2luKHdv
cmtfaXRlbXMpCisgICAgICAgIHJldHVybiBzZWxmLl9icm93c2VyLnN1Ym1pdCgpLnJlYWQoKQog
CiAgICAgZGVmIG5leHRfd29ya19pdGVtKHNlbGYsIHF1ZXVlX25hbWUpOgogICAgICAgICBfbG9n
LmRlYnVnKCJGZXRjaGluZyBuZXh0IHdvcmsgaXRlbSBmb3IgJXMiICUgcXVldWVfbmFtZSkKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNz
ZXJ2ZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvc3RhdHVzc2VydmVyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMWRlYTk2YWFhYzUxZGQ5
ZDNjMjI1MjMyY2Y5ZjZmYWU2MDcxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyX3VuaXR0ZXN0LnB5CkBAIC0w
LDAgKzEsNTAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisj
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3
ZWJraXRweS5jb21tb24ubmV0LnN0YXR1c3NlcnZlciBpbXBvcnQgU3RhdHVzU2VydmVyCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVy
ZQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrQnJvd3NlcgorCisKK2Ns
YXNzIFN0YXR1c1NlcnZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgc2VsZi5vdXRwdXRfY2FwdHVyZSA9IE91dHB1dENhcHR1cmUoKQorICAg
ICAgICBzZWxmLm91dHB1dF9jYXB0dXJlLmNhcHR1cmVfb3V0cHV0KCkKKworICAgIGRlZiB0ZWFy
RG93bihzZWxmKToKKyAgICAgICAgc2VsZi5vdXRwdXRfY2FwdHVyZS5yZXN0b3JlX291dHB1dCgp
CisKKyAgICBkZWYgdGVzdF91cmxfZm9yX2lzc3VlKHNlbGYpOgorICAgICAgICBtb2NrX2Jyb3dz
ZXIgPSBNb2NrQnJvd3NlcigpCisgICAgICAgIHN0YXR1c19zZXJ2ZXIgPSBTdGF0dXNTZXJ2ZXIo
YnJvd3Nlcj1tb2NrX2Jyb3dzZXIsIGJvdF9pZD0nMTIzJykKKyAgICAgICAgc3RhdHVzX3NlcnZl
ci51cGRhdGVfc3RhdHVzKCdxdWV1ZSBuYW1lJywgJ3RoZSBzdGF0dXMnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdxdWV1ZSBuYW1lJywgbW9ja19icm93c2VyLnBhcmFtc1sncXVldWVfbmFt
ZSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0aGUgc3RhdHVzJywgbW9ja19icm93c2Vy
LnBhcmFtc1snc3RhdHVzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEyMycsIG1vY2tf
YnJvd3Nlci5wYXJhbXNbJ2JvdF9pZCddKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL21haW4ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvbWFpbi5weQppbmRleCA5NTMxYjYzNWUyMzc4ZGI1ZTg4OGY2NWQ2ZTUyZDE4MmViMTE0ZDYy
Li5iNDdiYjQzZmQ5NGQ0ZTAxOTJkNmI2YWNjNTJkODc0ZWI4N2I5MTY1IDEwMDc1NQotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQpAQCAtNTksOCArNTksOSBAQCBjbGFzcyBX
ZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sKToKICAgICBnbG9iYWxfb3B0aW9ucyA9IFsKICAg
ICAgICAgbWFrZV9vcHRpb24oIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9InZlcmJvc2UiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJlbmFibGUgYWxsIGxvZ2dpbmci
KSwKICAgICAgICAgbWFrZV9vcHRpb24oIi0tZHJ5LXJ1biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9ImRyeV9ydW4iLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJkbyBub3QgdG91Y2ggcmVtb3Rl
IHNlcnZlcnMiKSwKLSAgICAgICAgbWFrZV9vcHRpb24oIi0tc3RhdHVzLWhvc3QiLCBhY3Rpb249
InN0b3JlIiwgZGVzdD0ic3RhdHVzX2hvc3QiLCB0eXBlPSJzdHJpbmciLCBuYXJncz0xLCBoZWxw
PSJIb3N0bmFtZSAoZS5nLiBsb2NhbGhvc3Qgb3IgY29tbWl0LndlYmtpdC5vcmcpIHdoZXJlIHN0
YXR1cyB1cGRhdGVzIHNob3VsZCBiZSBwb3N0ZWQuIiksCi0gICAgICAgIG1ha2Vfb3B0aW9uKCIt
LWlyYy1wYXNzd29yZCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJpcmNfcGFzc3dvcmQiLCB0eXBl
PSJzdHJpbmciLCBuYXJncz0xLCBoZWxwPSJQYXNzd29yZCB0byB1c2Ugd2hlbiBjb21tdW5pY2F0
aW5nIHZpYSBJUkMuIiksCisgICAgICAgIG1ha2Vfb3B0aW9uKCItLXN0YXR1cy1ob3N0IiwgYWN0
aW9uPSJzdG9yZSIsIGRlc3Q9InN0YXR1c19ob3N0IiwgdHlwZT0ic3RyaW5nIiwgaGVscD0iSG9z
dG5hbWUgKGUuZy4gbG9jYWxob3N0IG9yIGNvbW1pdC53ZWJraXQub3JnKSB3aGVyZSBzdGF0dXMg
dXBkYXRlcyBzaG91bGQgYmUgcG9zdGVkLiIpLAorICAgICAgICBtYWtlX29wdGlvbigiLS1ib3Qt
aWQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iYm90X2lkIiwgdHlwZT0ic3RyaW5nIiwgaGVscD0i
SWRlbnRpZmllciBmb3IgdGhpcyBib3QgKGlmIG11bHRpcGxlIGJvdHMgYXJlIHJ1bm5pbmcgZm9y
IGEgcXVldWUpIiksCisgICAgICAgIG1ha2Vfb3B0aW9uKCItLWlyYy1wYXNzd29yZCIsIGFjdGlv
bj0ic3RvcmUiLCBkZXN0PSJpcmNfcGFzc3dvcmQiLCB0eXBlPSJzdHJpbmciLCBoZWxwPSJQYXNz
d29yZCB0byB1c2Ugd2hlbiBjb21tdW5pY2F0aW5nIHZpYSBJUkMuIiksCiAgICAgXQogCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgpAQCAtMTIzLDYgKzEyNCw4IEBAIGNsYXNzIFdlYktp
dFBhdGNoKE11bHRpQ29tbWFuZFRvb2wpOgogICAgICAgICAgICAgc2VsZi5jb2RlcmV2aWV3LmRy
eXJ1biA9IFRydWUKICAgICAgICAgaWYgb3B0aW9ucy5zdGF0dXNfaG9zdDoKICAgICAgICAgICAg
IHNlbGYuc3RhdHVzX3NlcnZlci5zZXRfaG9zdChvcHRpb25zLnN0YXR1c19ob3N0KQorICAgICAg
ICBpZiBvcHRpb25zLmJvdF9pZDoKKyAgICAgICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlci5zZXRf
Ym90X2lkKG9wdGlvbnMuYm90X2lkKQogICAgICAgICBpZiBvcHRpb25zLmlyY19wYXNzd29yZDoK
ICAgICAgICAgICAgIHNlbGYuaXJjX3Bhc3N3b3JkID0gb3B0aW9ucy5pcmNfcGFzc3dvcmQKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CmluZGV4IDI3
N2JkMDhmZGI4MzBlYTA2NzdiNTQ0NmNlYTRhMGNkNTk3M2U2MWQuLmFmMTlmZWQ2OGI0N2FjOTli
NGUwNWE5NDMyZDFmNWU3NGFmMzQ4ZWUgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTYzMCwzICs2MzAsMTkgQEAgY2xhc3MgTW9ja1Rvb2wo
KToKIAogICAgIGRlZiBwYXRoKHNlbGYpOgogICAgICAgICByZXR1cm4gImVjaG8iCisKKworY2xh
c3MgTW9ja0Jyb3dzZXIob2JqZWN0KToKKyAgICBwYXJhbXMgPSB7fQorCisgICAgZGVmIG9wZW4o
c2VsZiwgdXJsKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHNlbGVjdF9mb3JtKHNlbGYsIG5h
bWUpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1
ZSk6CisgICAgICAgIHNlbGYucGFyYW1zW2tleV0gPSB2YWx1ZQorCisgICAgZGVmIHN1Ym1pdChz
ZWxmKToKKyAgICAgICAgcmV0dXJuIE1vY2soZmlsZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69235</attachid>
            <date>2010-09-29 11:37:01 -0700</date>
            <delta_ts>2010-09-29 12:07:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-46764-20100929113659.patch</filename>
            <type>text/plain</type>
            <size>18472</size>
            <attacher name="Mihai Parparita">mihaip</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA3YWIxZjU4Y2ZkNjI4ZWJjYmE2NDQ4NTA4ZjQwMmFjYmJhZjFmNGQyLi5mYzA4NTBl
ZGU5Y2MyMjhkMWI0OTkzMjU3ZDc4NDM1OWExNWE4NDFkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDktMjkgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBSZWNvcmQgYm90IElEIHdo
ZW4gdXBkYXRpbmcgcXVldWUgc3RhdHVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00Njc2NAorICAgICAgICAKKyAgICAgICAgU2luY2Ugd2Ugbm93IGhh
dmUgbXVsdGlwbGUgYm90cyBoYW5kbGluZyBwYXRjaGVzIGZyb20gdGhlIGNvbW1pdCBxdWV1ZSwK
KyAgICAgICAgd2UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIHN0YXR1cyB1cGRhdGVzIGZyb20gdGhl
bSwgc28gdGhhdCB3ZSBjYW4gZ3JvdXAKKyAgICAgICAgdGhlIHF1ZXVlIHN0YXR1cyBwYWdlIGlu
IGEgbGVzcyBjb25mdXNpbmcgd2F5LgorCisgICAgICAgICogUXVldWVTdGF0dXNTZXJ2ZXIvaGFu
ZGxlcnMvdXBkYXRlc3RhdHVzLnB5OiBBY2NlcHQgYm90X2lkIGFzIGlucHV0CisgICAgICAgICog
UXVldWVTdGF0dXNTZXJ2ZXIvbW9kZWwvcXVldWVzdGF0dXMucHk6IEFkZCBib3RfaWQgcHJvcGVy
dHkKKyAgICAgICAgKiBRdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRlc3RhdHVzLmh0
bWw6IEFkZCBib3RfaWQgaW5wdXQKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvYnVnemlsbGFfdW5pdHRlc3QucHk6IEV4dHJhY3QgTW9ja0Jyb3dzZXIKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5OiBBZGQgYm90X2lkCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlcl91bml0dGVz
dC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHk6IEFk
ZCAtLWJvdC1pZAorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weTog
QWRkIE1vY2tCcm93c2VyCisKIDIwMTAtMDktMjkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgTm8gcmV2aWV3LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3RhdHVzLnB5IGIvV2ViS2l0VG9v
bHMvUXVldWVTdGF0dXNTZXJ2ZXIvaGFuZGxlcnMvdXBkYXRlc3RhdHVzLnB5CmluZGV4IDg5ODU4
YjY5OTFiZmMwMjkwM2ZjYWJkZjJmNDJkOTg5MzUzODQ1NzMuLjdmMjdjYzYxODViM2MzODM1NzVi
YjYyOGI5MGExNDU1OGVmZGMxZTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1F1ZXVlU3RhdHVz
U2VydmVyL2hhbmRsZXJzL3VwZGF0ZXN0YXR1cy5weQorKysgYi9XZWJLaXRUb29scy9RdWV1ZVN0
YXR1c1NlcnZlci9oYW5kbGVycy91cGRhdGVzdGF0dXMucHkKQEAgLTQ5LDcgKzQ5LDkgQEAgY2xh
c3MgVXBkYXRlU3RhdHVzKFVwZGF0ZUJhc2UpOgogICAgICAgICBidWdfaWQgPSBzZWxmLl9pbnRf
ZnJvbV9yZXF1ZXN0KCJidWdfaWQiKQogICAgICAgICBwYXRjaF9pZCA9IHNlbGYuX2ludF9mcm9t
X3JlcXVlc3QoInBhdGNoX2lkIikKICAgICAgICAgcXVldWVfbmFtZSA9IHNlbGYucmVxdWVzdC5n
ZXQoInF1ZXVlX25hbWUiKQorICAgICAgICBib3RfaWQgPSBzZWxmLnJlcXVlc3QuZ2V0KCJib3Rf
aWQiKQogICAgICAgICBxdWV1ZV9zdGF0dXMucXVldWVfbmFtZSA9IHF1ZXVlX25hbWUKKyAgICAg
ICAgcXVldWVfc3RhdHVzLmJvdF9pZCA9IGJvdF9pZAogICAgICAgICBxdWV1ZV9zdGF0dXMuYWN0
aXZlX2J1Z19pZCA9IGJ1Z19pZAogICAgICAgICBxdWV1ZV9zdGF0dXMuYWN0aXZlX3BhdGNoX2lk
ID0gcGF0Y2hfaWQKICAgICAgICAgcXVldWVfc3RhdHVzLm1lc3NhZ2UgPSBzZWxmLnJlcXVlc3Qu
Z2V0KCJzdGF0dXMiKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvUXVldWVTdGF0dXNTZXJ2ZXIv
bW9kZWwvcXVldWVzdGF0dXMucHkgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2Rl
bC9xdWV1ZXN0YXR1cy5weQppbmRleCAzZDdlNTk5NTYwMTFmMDBlZmY5MTEzNjViZWNlMDQ5NmJk
ODQ4OTU1Li5kN2RhZTQ1MTI3MDdkZDVjOGU2ZTFmMjM0Y2IwMzM0MGI1MmQ3YTBiIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXN0YXR1cy5weQor
KysgYi9XZWJLaXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci9tb2RlbC9xdWV1ZXN0YXR1cy5weQpA
QCAtMzEsNiArMzEsNyBAQCBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0IGltcG9ydCBkYgogY2xh
c3MgUXVldWVTdGF0dXMoZGIuTW9kZWwpOgogICAgIGF1dGhvciA9IGRiLlVzZXJQcm9wZXJ0eSgp
CiAgICAgcXVldWVfbmFtZSA9IGRiLlN0cmluZ1Byb3BlcnR5KCkKKyAgICBib3RfaWQgPSBkYi5T
dHJpbmdQcm9wZXJ0eSgpCiAgICAgYWN0aXZlX2J1Z19pZCA9IGRiLkludGVnZXJQcm9wZXJ0eSgp
CiAgICAgYWN0aXZlX3BhdGNoX2lkID0gZGIuSW50ZWdlclByb3BlcnR5KCkKICAgICBtZXNzYWdl
ID0gZGIuU3RyaW5nUHJvcGVydHkobXVsdGlsaW5lPVRydWUpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRlc3RhdHVzLmh0bWwgYi9XZWJL
aXRUb29scy9RdWV1ZVN0YXR1c1NlcnZlci90ZW1wbGF0ZXMvdXBkYXRlc3RhdHVzLmh0bWwKaW5k
ZXggOTM0M2M2MDAxOWVhNTA3NjdmOTEzNzFkMTE2MmIwZTljOWUzOWRiYy4uMGY5OGJhNGRiYTJh
YmI0NWFlYWJhYmE2MWE0ZjlmMmNlNTY2MzEzNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvUXVl
dWVTdGF0dXNTZXJ2ZXIvdGVtcGxhdGVzL3VwZGF0ZXN0YXR1cy5odG1sCisrKyBiL1dlYktpdFRv
b2xzL1F1ZXVlU3RhdHVzU2VydmVyL3RlbXBsYXRlcy91cGRhdGVzdGF0dXMuaHRtbApAQCAtMSw2
ICsxLDEwIEBACiA8Zm9ybSBuYW1lPSJ1cGRhdGVfc3RhdHVzIiBlbmN0eXBlPSJtdWx0aXBhcnQv
Zm9ybS1kYXRhIiBtZXRob2Q9InBvc3QiPgogVXBkYXRlIHN0YXR1cyBmb3IgYSBxdWV1ZTogPGlu
cHV0IG5hbWU9InF1ZXVlX25hbWUiPgogIDxkaXY+CisgICAgIEJvdCBJZDoKKyAgICA8aW5wdXQg
bmFtZT0iYm90X2lkIj4KKyA8L2Rpdj4KKyA8ZGl2PgogICAgICBBY3RpdmUgQnVnIElkOgogICAg
IDxpbnB1dCBuYW1lPSJidWdfaWQiPgogIDwvZGl2PgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDMyZjIzY2Q2MThlNTQxMmZhMmNhOWUwZjhlNTY2ZmM0YjljNWQwYmIuLjNhNDU0ZDZmMGY1
ZWNmNGY5MTA3NzQ5MWY3ZmE5YzVjNTE5MTg4YmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9idWd6aWxsYV91bml0dGVzdC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvYnVnemlsbGFfdW5pdHRlc3QucHkK
QEAgLTMzLDI0ICszMywxMSBAQCBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gd2Via2l0cHkuY29tbW9u
LmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXJMaXN0LCBSZXZpZXdlciwgQ29tbWl0
dGVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhLCBC
dWd6aWxsYVF1ZXJpZXMsIHBhcnNlX2J1Z19pZCwgQ29tbWl0dGVyVmFsaWRhdG9yLCBCdWcKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0
dXJlCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tCcm93c2VyCiBmcm9t
IHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jawogZnJvbSB3ZWJraXRweS50aGly
ZHBhcnR5LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIAogCi1jbGFzcyBNb2Nr
QnJvd3NlcihvYmplY3QpOgotICAgIGRlZiBvcGVuKHNlbGYsIHVybCk6Ci0gICAgICAgIHBhc3MK
LQotICAgIGRlZiBzZWxlY3RfZm9ybShzZWxmLCBuYW1lKToKLSAgICAgICAgcGFzcwotCi0gICAg
ZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAgICBwYXNzCi0KLSAgICBk
ZWYgc3VibWl0KHNlbGYpOgotICAgICAgICBwYXNzCi0KLQogY2xhc3MgQnVnVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfaXNfdW5hc3NpZ25lZChzZWxmKToKICAgICAgICAg
Zm9yIGVtYWlsIGluIEJ1Zy51bmFzc2lnbmVkX2VtYWlsczoKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyLnB5CmluZGV4IDU3
MzkwYjg5YzMxNDMwNWZhYmFjMzY3NmI1YTE1ODFmZmExMjQ3NGEuLjk1ZDJmMTYyZTU4ZmZiYTFi
NDg4ODhmYjg2ODY3ZGE3MjlhYjYyOWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL25ldC9zdGF0dXNzZXJ2ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZlci5weQpAQCAtNDEsMTQgKzQxLDE4
IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Via2l0cHkuY29tbW9uLm5ldC5zdGF0dXNz
ZXJ2ZXIiKQogY2xhc3MgU3RhdHVzU2VydmVyOgogICAgIGRlZmF1bHRfaG9zdCA9ICJxdWV1ZXMu
d2Via2l0Lm9yZyIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PWRlZmF1bHRfaG9zdCk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9ZGVmYXVsdF9ob3N0LCBicm93c2VyPU5vbmUs
IGJvdF9pZD1Ob25lKToKICAgICAgICAgc2VsZi5zZXRfaG9zdChob3N0KQotICAgICAgICBzZWxm
LmJyb3dzZXIgPSBCcm93c2VyKCkKKyAgICAgICAgc2VsZi5fYnJvd3NlciA9IGJyb3dzZXIgb3Ig
QnJvd3NlcigpCisgICAgICAgIHNlbGYuc2V0X2JvdF9pZChib3RfaWQpCiAKICAgICBkZWYgc2V0
X2hvc3Qoc2VsZiwgaG9zdCk6CiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgc2Vs
Zi51cmwgPSAiaHR0cDovLyVzIiAlIHNlbGYuaG9zdAogCisgICAgZGVmIHNldF9ib3RfaWQoc2Vs
ZiwgYm90X2lkKToKKyAgICAgICAgc2VsZi5ib3RfaWQgPSBib3RfaWQKKwogICAgIGRlZiByZXN1
bHRzX3VybF9mb3Jfc3RhdHVzKHNlbGYsIHN0YXR1c19pZCk6CiAgICAgICAgIHJldHVybiAiJXMv
cmVzdWx0cy8lcyIgJSAoc2VsZi51cmwsIHN0YXR1c19pZCkKIApAQCAtNTYsMTQgKzYwLDE0IEBA
IGNsYXNzIFN0YXR1c1NlcnZlcjoKICAgICAgICAgaWYgbm90IHBhdGNoOgogICAgICAgICAgICAg
cmV0dXJuCiAgICAgICAgIGlmIHBhdGNoLmJ1Z19pZCgpOgotICAgICAgICAgICAgc2VsZi5icm93
c2VyWyJidWdfaWQiXSA9IHVuaWNvZGUocGF0Y2guYnVnX2lkKCkpCisgICAgICAgICAgICBzZWxm
Ll9icm93c2VyWyJidWdfaWQiXSA9IHVuaWNvZGUocGF0Y2guYnVnX2lkKCkpCiAgICAgICAgIGlm
IHBhdGNoLmlkKCk6Ci0gICAgICAgICAgICBzZWxmLmJyb3dzZXJbInBhdGNoX2lkIl0gPSB1bmlj
b2RlKHBhdGNoLmlkKCkpCisgICAgICAgICAgICBzZWxmLl9icm93c2VyWyJwYXRjaF9pZCJdID0g
dW5pY29kZShwYXRjaC5pZCgpKQogCiAgICAgZGVmIF9hZGRfcmVzdWx0c19maWxlKHNlbGYsIHJl
c3VsdHNfZmlsZSk6CiAgICAgICAgIGlmIG5vdCByZXN1bHRzX2ZpbGU6CiAgICAgICAgICAgICBy
ZXR1cm4KLSAgICAgICAgc2VsZi5icm93c2VyLmFkZF9maWxlKHJlc3VsdHNfZmlsZSwgInRleHQv
cGxhaW4iLCAicmVzdWx0cy50eHQiLCAncmVzdWx0c19maWxlJykKKyAgICAgICAgc2VsZi5fYnJv
d3Nlci5hZGRfZmlsZShyZXN1bHRzX2ZpbGUsICJ0ZXh0L3BsYWluIiwgInJlc3VsdHMudHh0Iiwg
J3Jlc3VsdHNfZmlsZScpCiAKICAgICBkZWYgX3Bvc3Rfc3RhdHVzX3RvX3NlcnZlcihzZWxmLCBx
dWV1ZV9uYW1lLCBzdGF0dXMsIHBhdGNoLCByZXN1bHRzX2ZpbGUpOgogICAgICAgICBpZiByZXN1
bHRzX2ZpbGU6CkBAIC03MSwzMCArNzUsMzIgQEAgY2xhc3MgU3RhdHVzU2VydmVyOgogICAgICAg
ICAgICAgcmVzdWx0c19maWxlLnNlZWsoMCkKIAogICAgICAgICB1cGRhdGVfc3RhdHVzX3VybCA9
ICIlcy91cGRhdGUtc3RhdHVzIiAlIHNlbGYudXJsCi0gICAgICAgIHNlbGYuYnJvd3Nlci5vcGVu
KHVwZGF0ZV9zdGF0dXNfdXJsKQotICAgICAgICBzZWxmLmJyb3dzZXIuc2VsZWN0X2Zvcm0obmFt
ZT0idXBkYXRlX3N0YXR1cyIpCi0gICAgICAgIHNlbGYuYnJvd3NlclsicXVldWVfbmFtZSJdID0g
cXVldWVfbmFtZQorICAgICAgICBzZWxmLl9icm93c2VyLm9wZW4odXBkYXRlX3N0YXR1c191cmwp
CisgICAgICAgIHNlbGYuX2Jyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0idXBkYXRlX3N0YXR1cyIp
CisgICAgICAgIHNlbGYuX2Jyb3dzZXJbInF1ZXVlX25hbWUiXSA9IHF1ZXVlX25hbWUKKyAgICAg
ICAgaWYgc2VsZi5ib3RfaWQ6CisgICAgICAgICAgICBzZWxmLl9icm93c2VyWyJib3RfaWQiXSA9
IHNlbGYuYm90X2lkCiAgICAgICAgIHNlbGYuX2FkZF9wYXRjaChwYXRjaCkKLSAgICAgICAgc2Vs
Zi5icm93c2VyWyJzdGF0dXMiXSA9IHN0YXR1cworICAgICAgICBzZWxmLl9icm93c2VyWyJzdGF0
dXMiXSA9IHN0YXR1cwogICAgICAgICBzZWxmLl9hZGRfcmVzdWx0c19maWxlKHJlc3VsdHNfZmls
ZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuYnJvd3Nlci5zdWJtaXQoKS5yZWFkKCkgIyBUaGlzIGlz
IHRoZSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCBzdGF0dXMgb2JqZWN0LgorICAgICAgICByZXR1
cm4gc2VsZi5fYnJvd3Nlci5zdWJtaXQoKS5yZWFkKCkgICMgVGhpcyBpcyB0aGUgaWQgb2YgdGhl
IG5ld2x5IGNyZWF0ZWQgc3RhdHVzIG9iamVjdC4KIAogICAgIGRlZiBfcG9zdF9zdm5fcmV2aXNp
b25fdG9fc2VydmVyKHNlbGYsIHN2bl9yZXZpc2lvbl9udW1iZXIsIGJyb2tlbl9ib3QpOgogICAg
ICAgICB1cGRhdGVfc3ZuX3JldmlzaW9uX3VybCA9ICIlcy91cGRhdGUtc3ZuLXJldmlzaW9uIiAl
IHNlbGYudXJsCi0gICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKHVwZGF0ZV9zdm5fcmV2aXNpb25f
dXJsKQotICAgICAgICBzZWxmLmJyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0idXBkYXRlX3N2bl9y
ZXZpc2lvbiIpCi0gICAgICAgIHNlbGYuYnJvd3NlclsibnVtYmVyIl0gPSB1bmljb2RlKHN2bl9y
ZXZpc2lvbl9udW1iZXIpCi0gICAgICAgIHNlbGYuYnJvd3NlclsiYnJva2VuX2JvdCJdID0gYnJv
a2VuX2JvdAotICAgICAgICByZXR1cm4gc2VsZi5icm93c2VyLnN1Ym1pdCgpLnJlYWQoKQorICAg
ICAgICBzZWxmLl9icm93c2VyLm9wZW4odXBkYXRlX3N2bl9yZXZpc2lvbl91cmwpCisgICAgICAg
IHNlbGYuX2Jyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0idXBkYXRlX3N2bl9yZXZpc2lvbiIpCisg
ICAgICAgIHNlbGYuX2Jyb3dzZXJbIm51bWJlciJdID0gdW5pY29kZShzdm5fcmV2aXNpb25fbnVt
YmVyKQorICAgICAgICBzZWxmLl9icm93c2VyWyJicm9rZW5fYm90Il0gPSBicm9rZW5fYm90Cisg
ICAgICAgIHJldHVybiBzZWxmLl9icm93c2VyLnN1Ym1pdCgpLnJlYWQoKQogCiAgICAgZGVmIF9w
b3N0X3dvcmtfaXRlbXNfdG9fc2VydmVyKHNlbGYsIHF1ZXVlX25hbWUsIHdvcmtfaXRlbXMpOgog
ICAgICAgICB1cGRhdGVfd29ya19pdGVtc191cmwgPSAiJXMvdXBkYXRlLXdvcmstaXRlbXMiICUg
c2VsZi51cmwKLSAgICAgICAgc2VsZi5icm93c2VyLm9wZW4odXBkYXRlX3dvcmtfaXRlbXNfdXJs
KQotICAgICAgICBzZWxmLmJyb3dzZXIuc2VsZWN0X2Zvcm0obmFtZT0idXBkYXRlX3dvcmtfaXRl
bXMiKQotICAgICAgICBzZWxmLmJyb3dzZXJbInF1ZXVlX25hbWUiXSA9IHF1ZXVlX25hbWUKKyAg
ICAgICAgc2VsZi5fYnJvd3Nlci5vcGVuKHVwZGF0ZV93b3JrX2l0ZW1zX3VybCkKKyAgICAgICAg
c2VsZi5fYnJvd3Nlci5zZWxlY3RfZm9ybShuYW1lPSJ1cGRhdGVfd29ya19pdGVtcyIpCisgICAg
ICAgIHNlbGYuX2Jyb3dzZXJbInF1ZXVlX25hbWUiXSA9IHF1ZXVlX25hbWUKICAgICAgICAgd29y
a19pdGVtcyA9IG1hcCh1bmljb2RlLCB3b3JrX2l0ZW1zKSAgIyAuam9pbiBleHBlY3RzIHN0cmlu
Z3MKLSAgICAgICAgc2VsZi5icm93c2VyWyJ3b3JrX2l0ZW1zIl0gPSAiICIuam9pbih3b3JrX2l0
ZW1zKQotICAgICAgICByZXR1cm4gc2VsZi5icm93c2VyLnN1Ym1pdCgpLnJlYWQoKQorICAgICAg
ICBzZWxmLl9icm93c2VyWyJ3b3JrX2l0ZW1zIl0gPSAiICIuam9pbih3b3JrX2l0ZW1zKQorICAg
ICAgICByZXR1cm4gc2VsZi5fYnJvd3Nlci5zdWJtaXQoKS5yZWFkKCkKIAogICAgIGRlZiBuZXh0
X3dvcmtfaXRlbShzZWxmLCBxdWV1ZV9uYW1lKToKICAgICAgICAgX2xvZy5kZWJ1ZygiRmV0Y2hp
bmcgbmV4dCB3b3JrIGl0ZW0gZm9yICVzIiAlIHF1ZXVlX25hbWUpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvc3RhdHVzc2VydmVyX3VuaXR0ZXN0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3N0YXR1c3NlcnZl
cl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTY5YmEwOGQ4ZGYzZjFkNDc5ODRiZmVmOTZhOGM3
ODczNzdhMTg3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L3N0YXR1c3NlcnZlcl91bml0dGVzdC5weQpAQCAtMCwwICsxLDQzIEBACisj
IENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgor
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9u
Lm5ldC5zdGF0dXNzZXJ2ZXIgaW1wb3J0IFN0YXR1c1NlcnZlcgorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91dHB1dENhcHR1cmVUZXN0Q2FzZUJhc2UK
K2Zyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja0Jyb3dzZXIKKworCitjbGFz
cyBTdGF0dXNTZXJ2ZXJUZXN0KE91dHB1dENhcHR1cmVUZXN0Q2FzZUJhc2UpOgorICAgIGRlZiB0
ZXN0X3VybF9mb3JfaXNzdWUoc2VsZik6CisgICAgICAgIG1vY2tfYnJvd3NlciA9IE1vY2tCcm93
c2VyKCkKKyAgICAgICAgc3RhdHVzX3NlcnZlciA9IFN0YXR1c1NlcnZlcihicm93c2VyPW1vY2tf
YnJvd3NlciwgYm90X2lkPScxMjMnKQorICAgICAgICBzdGF0dXNfc2VydmVyLnVwZGF0ZV9zdGF0
dXMoJ3F1ZXVlIG5hbWUnLCAndGhlIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3F1ZXVlIG5hbWUnLCBtb2NrX2Jyb3dzZXIucGFyYW1zWydxdWV1ZV9uYW1lJ10pCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3RoZSBzdGF0dXMnLCBtb2NrX2Jyb3dzZXIucGFyYW1zWydzdGF0
dXMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTIzJywgbW9ja19icm93c2VyLnBhcmFt
c1snYm90X2lkJ10pCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CmluZGV4IDY4YTM5MTlkN2U3Mzk5ODhk
YzJhZmM5NWMzZjE2NWJjMDA0M2RjMmQuLjQ1ZTBlM2ZjOTM2Y2E4Mjk1NjA4ODBhODYxMTk2NGJm
ZmY2ZjIxZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CkBAIC0yOSw2ICsyOSw3IEBACiAjIENs
YXNzIGZvciB1bml0dGVzdCBzdXBwb3J0LiAgVXNlZCBmb3IgY2FwdHVyaW5nIHN0ZGVyci9zdGRv
dXQuCiAKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAogZnJvbSBTdHJpbmdJTyBpbXBvcnQg
U3RyaW5nSU8KIAogY2xhc3MgT3V0cHV0Q2FwdHVyZShvYmplY3QpOgpAQCAtMzcsNyArMzgsOSBA
QCBjbGFzcyBPdXRwdXRDYXB0dXJlKG9iamVjdCk6CiAKICAgICBkZWYgX2NhcHR1cmVfb3V0cHV0
X3dpdGhfbmFtZShzZWxmLCBvdXRwdXRfbmFtZSk6CiAgICAgICAgIHNlbGYuc2F2ZWRfb3V0cHV0
c1tvdXRwdXRfbmFtZV0gPSBnZXRhdHRyKHN5cywgb3V0cHV0X25hbWUpCi0gICAgICAgIHNldGF0
dHIoc3lzLCBvdXRwdXRfbmFtZSwgU3RyaW5nSU8oKSkKKyAgICAgICAgY2FwdHVyZWRfb3V0cHV0
ID0gU3RyaW5nSU8oKQorICAgICAgICBzZXRhdHRyKHN5cywgb3V0cHV0X25hbWUsIGNhcHR1cmVk
X291dHB1dCkKKyAgICAgICAgcmV0dXJuIGNhcHR1cmVkX291dHB1dAogCiAgICAgZGVmIF9yZXN0
b3JlX291dHB1dF93aXRoX25hbWUoc2VsZiwgb3V0cHV0X25hbWUpOgogICAgICAgICBjYXB0dXJl
ZF9vdXRwdXQgPSBnZXRhdHRyKHN5cywgb3V0cHV0X25hbWUpLmdldHZhbHVlKCkKQEAgLTQ2LDgg
KzQ5LDcgQEAgY2xhc3MgT3V0cHV0Q2FwdHVyZShvYmplY3QpOgogICAgICAgICByZXR1cm4gY2Fw
dHVyZWRfb3V0cHV0CiAKICAgICBkZWYgY2FwdHVyZV9vdXRwdXQoc2VsZik6Ci0gICAgICAgIHNl
bGYuX2NhcHR1cmVfb3V0cHV0X3dpdGhfbmFtZSgic3Rkb3V0IikKLSAgICAgICAgc2VsZi5fY2Fw
dHVyZV9vdXRwdXRfd2l0aF9uYW1lKCJzdGRlcnIiKQorICAgICAgICByZXR1cm4gKHNlbGYuX2Nh
cHR1cmVfb3V0cHV0X3dpdGhfbmFtZSgic3Rkb3V0IiksIHNlbGYuX2NhcHR1cmVfb3V0cHV0X3dp
dGhfbmFtZSgic3RkZXJyIikpCiAKICAgICBkZWYgcmVzdG9yZV9vdXRwdXQoc2VsZik6CiAgICAg
ICAgIHJldHVybiAoc2VsZi5fcmVzdG9yZV9vdXRwdXRfd2l0aF9uYW1lKCJzdGRvdXQiKSwgc2Vs
Zi5fcmVzdG9yZV9vdXRwdXRfd2l0aF9uYW1lKCJzdGRlcnIiKSkKQEAgLTYzLDMgKzY1LDIyIEBA
IGNsYXNzIE91dHB1dENhcHR1cmUob2JqZWN0KToKICAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1
YWwoc3RkZXJyX3N0cmluZywgZXhwZWN0ZWRfc3RkZXJyKQogICAgICAgICAjIFRoaXMgaXMgYSBs
aXR0bGUgc3RyYW5nZSwgYnV0IEkgZG9uJ3Qga25vdyB3aGVyZSBlbHNlIHRvIHJldHVybiB0aGlz
IGluZm9ybWF0aW9uLgogICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCisKKworY2xhc3MgT3V0
cHV0Q2FwdHVyZVRlc3RDYXNlQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVw
KHNlbGYpOgorICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5zZXRVcChzZWxmKQorICAgICAgICBz
ZWxmLm91dHB1dF9jYXB0dXJlID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIChzZWxmLl9fY2Fw
dHVyZWRfc3Rkb3V0LCBzZWxmLl9fY2FwdHVyZWRfc3RkZXJyKSA9IHNlbGYub3V0cHV0X2NhcHR1
cmUuY2FwdHVyZV9vdXRwdXQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBk
ZWwgc2VsZi5fX2NhcHR1cmVkX3N0ZG91dAorICAgICAgICBkZWwgc2VsZi5fX2NhcHR1cmVkX3N0
ZGVycgorICAgICAgICBzZWxmLm91dHB1dF9jYXB0dXJlLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAg
ICAgdW5pdHRlc3QuVGVzdENhc2UudGVhckRvd24oc2VsZikKKworICAgIGRlZiBhc3NlcnRTdGRv
dXQoc2VsZiwgZXhwZWN0ZWRfc3Rkb3V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhw
ZWN0ZWRfc3Rkb3V0LCBzZWxmLl9fY2FwdHVyZWRfc3Rkb3V0LmdldHZhbHVlKCkpCisKKyAgICBk
ZWYgYXNzZXJ0U3RkZXJyKHNlbGYsIGV4cGVjdGVkX3N0ZGVycik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKGV4cGVjdGVkX3N0ZGVyciwgc2VsZi5fX2NhcHR1cmVkX3N0ZGVyci5nZXR2YWx1
ZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3F1ZXVlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9xdWV1ZXMucHkKaW5kZXggODBmZDJlYTEyZTYyNGQ2ZDI2MGE1YjAwMWM1ZDliYjVmOGZlMzZj
NC4uNGZiMWE3YzMzNTliM2ZiZTZlOTM5NDFjOGYyNDU0ZDY3MWM3NmRhNyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CkBA
IC03OCw2ICs3OCw4IEBAIGNsYXNzIEFic3RyYWN0UXVldWUoQ29tbWFuZCwgUXVldWVFbmdpbmVE
ZWxlZ2F0ZSk6CiAgICAgICAgICMgYmVjYXVzZSBvdXIgZ2xvYmFsIG9wdGlvbiBjb2RlIGxvb2tz
IGZvciB0aGUgZmlyc3QgYXJndW1lbnQgd2hpY2ggZG9lcwogICAgICAgICAjIG5vdCBiZWdpbiB3
aXRoICItIiBhbmQgYXNzdW1lcyB0aGF0IGlzIHRoZSBjb21tYW5kIG5hbWUuCiAgICAgICAgIHdl
YmtpdF9wYXRjaF9hcmdzICs9IFsiLS1zdGF0dXMtaG9zdD0lcyIgJSBzZWxmLl90b29sLnN0YXR1
c19zZXJ2ZXIuaG9zdF0KKyAgICAgICAgaWYgc2VsZi5fdG9vbC5zdGF0dXNfc2VydmVyLmJvdF9p
ZDoKKyAgICAgICAgICAgIHdlYmtpdF9wYXRjaF9hcmdzICs9IFsiLS1ib3QtaWQ9JXMiICUgc2Vs
Zi5fdG9vbC5zdGF0dXNfc2VydmVyLmJvdF9pZF0KICAgICAgICAgd2Via2l0X3BhdGNoX2FyZ3Mu
ZXh0ZW5kKGFyZ3MpCiAgICAgICAgIHJldHVybiBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5k
X3Rocm93X2lmX2ZhaWwod2Via2l0X3BhdGNoX2FyZ3MpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzX3VuaXR0ZXN0
LnB5CmluZGV4IDAyOTgxNGVlMzc2NTlkYzQ0MTU5NzQxMWE5OTVjMjNkOGYxMjZlNWQuLmM4OWEw
YzBkZjllMzE5YjViNjFjNzYzOTRmMjViY2JjZDZkN2VkNDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9xdWV1ZXNfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlc191bml0
dGVzdC5weQpAQCAtNjMsMTEgKzYzLDEyIEBAIGNsYXNzIEFic3RyYWN0UXVldWVUZXN0KENvbW1h
bmRzVGVzdCk6CiAgICAgZGVmIF9hc3NlcnRfcnVuX3dlYmtpdF9wYXRjaChzZWxmLCBydW5fYXJn
cyk6CiAgICAgICAgIHF1ZXVlID0gVGVzdFF1ZXVlKCkKICAgICAgICAgdG9vbCA9IE1vY2tUb29s
KCkKKyAgICAgICAgdG9vbC5zdGF0dXNfc2VydmVyLmJvdF9pZCA9ICJnb3J0IgogICAgICAgICB0
b29sLmV4ZWN1dGl2ZSA9IE1vY2soKQogICAgICAgICBxdWV1ZS5iaW5kX3RvX3Rvb2wodG9vbCkK
IAogICAgICAgICBxdWV1ZS5ydW5fd2Via2l0X3BhdGNoKHJ1bl9hcmdzKQotICAgICAgICBleHBl
Y3RlZF9ydW5fYXJncyA9IFsiZWNobyIsICItLXN0YXR1cy1ob3N0PWV4YW1wbGUuY29tIl0gKyBy
dW5fYXJncworICAgICAgICBleHBlY3RlZF9ydW5fYXJncyA9IFsiZWNobyIsICItLXN0YXR1cy1o
b3N0PWV4YW1wbGUuY29tIiwgIi0tYm90LWlkPWdvcnQiXSArIHJ1bl9hcmdzCiAgICAgICAgIHRv
b2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZfZmFpbC5hc3NlcnRfY2FsbGVkX3dpdGgoZXhw
ZWN0ZWRfcnVuX2FyZ3MpCiAKICAgICBkZWYgdGVzdF9ydW5fd2Via2l0X3BhdGNoKHNlbGYpOgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQppbmRleCA5NTMxYjYzNWUy
Mzc4ZGI1ZTg4OGY2NWQ2ZTUyZDE4MmViMTE0ZDYyLi5iNDdiYjQzZmQ5NGQ0ZTAxOTJkNmI2YWNj
NTJkODc0ZWI4N2I5MTY1IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbWFpbi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFp
bi5weQpAQCAtNTksOCArNTksOSBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29s
KToKICAgICBnbG9iYWxfb3B0aW9ucyA9IFsKICAgICAgICAgbWFrZV9vcHRpb24oIi12IiwgIi0t
dmVyYm9zZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InZlcmJvc2UiLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJlbmFibGUgYWxsIGxvZ2dpbmciKSwKICAgICAgICAgbWFrZV9vcHRpb24oIi0t
ZHJ5LXJ1biIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImRyeV9ydW4iLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJkbyBub3QgdG91Y2ggcmVtb3RlIHNlcnZlcnMiKSwKLSAgICAgICAgbWFrZV9v
cHRpb24oIi0tc3RhdHVzLWhvc3QiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0ic3RhdHVzX2hvc3Qi
LCB0eXBlPSJzdHJpbmciLCBuYXJncz0xLCBoZWxwPSJIb3N0bmFtZSAoZS5nLiBsb2NhbGhvc3Qg
b3IgY29tbWl0LndlYmtpdC5vcmcpIHdoZXJlIHN0YXR1cyB1cGRhdGVzIHNob3VsZCBiZSBwb3N0
ZWQuIiksCi0gICAgICAgIG1ha2Vfb3B0aW9uKCItLWlyYy1wYXNzd29yZCIsIGFjdGlvbj0ic3Rv
cmUiLCBkZXN0PSJpcmNfcGFzc3dvcmQiLCB0eXBlPSJzdHJpbmciLCBuYXJncz0xLCBoZWxwPSJQ
YXNzd29yZCB0byB1c2Ugd2hlbiBjb21tdW5pY2F0aW5nIHZpYSBJUkMuIiksCisgICAgICAgIG1h
a2Vfb3B0aW9uKCItLXN0YXR1cy1ob3N0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InN0YXR1c19o
b3N0IiwgdHlwZT0ic3RyaW5nIiwgaGVscD0iSG9zdG5hbWUgKGUuZy4gbG9jYWxob3N0IG9yIGNv
bW1pdC53ZWJraXQub3JnKSB3aGVyZSBzdGF0dXMgdXBkYXRlcyBzaG91bGQgYmUgcG9zdGVkLiIp
LAorICAgICAgICBtYWtlX29wdGlvbigiLS1ib3QtaWQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0i
Ym90X2lkIiwgdHlwZT0ic3RyaW5nIiwgaGVscD0iSWRlbnRpZmllciBmb3IgdGhpcyBib3QgKGlm
IG11bHRpcGxlIGJvdHMgYXJlIHJ1bm5pbmcgZm9yIGEgcXVldWUpIiksCisgICAgICAgIG1ha2Vf
b3B0aW9uKCItLWlyYy1wYXNzd29yZCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJpcmNfcGFzc3dv
cmQiLCB0eXBlPSJzdHJpbmciLCBoZWxwPSJQYXNzd29yZCB0byB1c2Ugd2hlbiBjb21tdW5pY2F0
aW5nIHZpYSBJUkMuIiksCiAgICAgXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgpA
QCAtMTIzLDYgKzEyNCw4IEBAIGNsYXNzIFdlYktpdFBhdGNoKE11bHRpQ29tbWFuZFRvb2wpOgog
ICAgICAgICAgICAgc2VsZi5jb2RlcmV2aWV3LmRyeXJ1biA9IFRydWUKICAgICAgICAgaWYgb3B0
aW9ucy5zdGF0dXNfaG9zdDoKICAgICAgICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlci5zZXRfaG9z
dChvcHRpb25zLnN0YXR1c19ob3N0KQorICAgICAgICBpZiBvcHRpb25zLmJvdF9pZDoKKyAgICAg
ICAgICAgIHNlbGYuc3RhdHVzX3NlcnZlci5zZXRfYm90X2lkKG9wdGlvbnMuYm90X2lkKQogICAg
ICAgICBpZiBvcHRpb25zLmlyY19wYXNzd29yZDoKICAgICAgICAgICAgIHNlbGYuaXJjX3Bhc3N3
b3JkID0gb3B0aW9ucy5pcmNfcGFzc3dvcmQKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL21vY2t0b29sLnB5CmluZGV4IDI3N2JkMDhmZGI4MzBlYTA2NzdiNTQ0NmNlYTRh
MGNkNTk3M2U2MWQuLmZkMjU1NzliNDEzMzQ3NGZhMjkwYjZhODZjODFjZjg5NWM2NzU5ZjggMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTUx
NSw4ICs1MTUsOSBAQCBjbGFzcyBNb2NrSVJDKG9iamVjdCk6CiAKIGNsYXNzIE1vY2tTdGF0dXNT
ZXJ2ZXIob2JqZWN0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrX2l0ZW1zPU5vbmUp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBib3RfaWQ9Tm9uZSwgd29ya19pdGVtcz1Ob25lKToK
ICAgICAgICAgc2VsZi5ob3N0ID0gImV4YW1wbGUuY29tIgorICAgICAgICBzZWxmLmJvdF9pZCA9
IGJvdF9pZAogICAgICAgICBzZWxmLl93b3JrX2l0ZW1zID0gd29ya19pdGVtcyBvciBbXQogCiAg
ICAgZGVmIHBhdGNoX3N0YXR1cyhzZWxmLCBxdWV1ZV9uYW1lLCBwYXRjaF9pZCk6CkBAIC02MzAs
MyArNjMxLDE5IEBAIGNsYXNzIE1vY2tUb29sKCk6CiAKICAgICBkZWYgcGF0aChzZWxmKToKICAg
ICAgICAgcmV0dXJuICJlY2hvIgorCisKK2NsYXNzIE1vY2tCcm93c2VyKG9iamVjdCk6CisgICAg
cGFyYW1zID0ge30KKworICAgIGRlZiBvcGVuKHNlbGYsIHVybCk6CisgICAgICAgIHBhc3MKKwor
ICAgIGRlZiBzZWxlY3RfZm9ybShzZWxmLCBuYW1lKToKKyAgICAgICAgcGFzcworCisgICAgZGVm
IF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICBzZWxmLnBhcmFtc1trZXld
ID0gdmFsdWUKKworICAgIGRlZiBzdWJtaXQoc2VsZik6CisgICAgICAgIHJldHVybiBNb2NrKGZp
bGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>