<?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>148197</bug_id>
          
          <creation_ts>2015-08-19 15:13:27 -0700</creation_ts>
          <short_desc>iOS Simulator layout-tests fail to start while cleaning a directory structure if simulator is already running</short_desc>
          <delta_ts>2017-03-15 17:19:24 -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>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>glenn</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119048</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2015-08-19 15:13:27 -0700</bug_when>
    <thetext>see rdar://22334382</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119055</commentid>
    <comment_count>1</comment_count>
      <attachid>259414</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2015-08-19 15:30:07 -0700</bug_when>
    <thetext>Created attachment 259414
proposed patch

The failure happens when a simulator is already running (due to previous run or some other reasons). Due to that the directory cannot be deleted since the simulator is writing some files to it. 
In this patch, we are quitting all the running simulator before attempting to delete the logs directory. Tested on local setup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119090</commentid>
    <comment_count>2</comment_count>
      <attachid>259414</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-19 16:46:01 -0700</bug_when>
    <thetext>Comment on attachment 259414
proposed patch

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

&gt; Tools/Scripts/webkitpy/port/ios.py:387
&gt; +        self._executive.run_command([&apos;osascript&apos;, &apos;-e&apos;, &apos;tell application id &quot;com.apple.iphonesimulator&quot; to quit&apos;])
&gt; +        quit_delay = 5
&gt; +        _log.debug(&apos;Waiting {seconds} seconds for any old iOS Simulator instance to quit ...&apos;.format(seconds=quit_delay))
&gt; +        time.sleep(quit_delay)
&gt;          if os.path.isdir(data_path):
&gt;              shutil.rmtree(data_path)

Is it necessary to remove the data directory? I mean, check_sys_deps() will conditionally erase the simulator device using &quot;simctl erase&quot;, which will delete the data directory. If it is not necessary then I suggest we have this function be empty (except for the presence of the pass keyword - since Python does not allow a function to have an empty body). If it is necessary to remove the data directory here then can we make use of Simulator.check_simulator_device_and_erase_if_needed() or extract the logic from this function into a shared function that can be called here and in Simulator.check_simulator_device_and_erase_if_needed()? Can we make use of Simulator.wait_until_device_is_in_state() to wait until the booted simulator device is shutdown instead of waiting a hardcoded 5 seconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119091</commentid>
    <comment_count>3</comment_count>
      <attachid>259414</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-19 16:47:27 -0700</bug_when>
    <thetext>Comment on attachment 259414
proposed patch

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

&gt; Tools/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=148197

Please include the radar URL, &lt;rdar://problem/22334382&gt;, under the Bugzilla bug URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119571</commentid>
    <comment_count>4</comment_count>
      <attachid>259560</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2015-08-20 18:59:15 -0700</bug_when>
    <thetext>Created attachment 259560
Proposed patch

- Quit the simulator after the testing is done, so that it is not already running during the next build.
 
- Instead of quitting the simulator during the setup through the code, use kill-old-processes to kill the Simulator (will need another patch for buildbot).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119822</commentid>
    <comment_count>5</comment_count>
      <attachid>259560</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-21 11:33:42 -0700</bug_when>
    <thetext>Comment on attachment 259560
Proposed patch

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

&gt; Tools/BuildSlaveSupport/kill-old-processes:88
&gt; +        &quot;Simulator&quot;  #FIXME: Consider moving iOS-Specific tasks to their own list

Please put a space character after the &apos;#&apos;, substitute &quot;specific&quot; for &quot;Specific&quot; and add a period to the end of this sentence.

&gt; Tools/Scripts/webkitpy/port/ios.py:-248
&gt; -        # testing_device will fail to boot if it is already booted. We assume that if testing_device
&gt; -        # is booted that it was booted by the iOS Simulator app (as opposed to simctl). So, quit the
&gt; -        # iOS Simulator app to shutdown testing_device.
&gt; -        # FIXME: &lt;rdar://problem/20916140&gt; Switch to using CoreSimulator.framework for launching and quitting iOS Simulator
&gt; -        self._executive.run_command([&apos;osascript&apos;, &apos;-e&apos;, &apos;tell application id &quot;com.apple.iphonesimulator&quot; to quit&apos;])
&gt; -        Simulator.wait_until_device_is_in_state(testing_device.udid, Simulator.DeviceState.SHUTDOWN)
&gt; -

Actually, we need this code to handle the scenario where a person launched the iOS Simulator with simulator device testing_device and then subsequently runs run-webkit-test --ios-simulator (this is implied by the comment on lines 242 - 244). So, I suggest that we extract the common code into shared function, say _quitIOSSimulator, that we call from both here and clean_up_test_run(). Maybe something like:

def _quitIOSSimulator(self):
    # FIXME: &lt;rdar://problem/20916140&gt; Switch to using CoreSimulator.framework for launching and quitting iOS Simulator
    self._executive.run_command([&apos;osascript&apos;, &apos;-e&apos;, &apos;tell application id &quot;com.apple.iphonesimulator&quot; to quit&apos;])</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119826</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-21 11:36:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; [...]
&gt; def _quitIOSSimulator(self):
&gt;     # FIXME: &lt;rdar://problem/20916140&gt; Switch to using
&gt; CoreSimulator.framework for launching and quitting iOS Simulator
&gt;     self._executive.run_command([&apos;osascript&apos;, &apos;-e&apos;, &apos;tell application id
&gt; &quot;com.apple.iphonesimulator&quot; to quit&apos;])

We may also want to take to this opportunity to extract the bundle identifier &quot;com.apple.iphonesimulator&quot; into a constant that can be shared by both the quit simulator logic (say, in IOSSimulatorPort._quitIOSSimulator()) and IOSSimulatorPort.setup_test_run().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119999</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-21 16:50:09 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Tools/Scripts/webkitpy/port/ios.py:-248
&gt; &gt; -        # testing_device will fail to boot if it is already booted. We assume that if testing_device
&gt; &gt; -        # is booted that it was booted by the iOS Simulator app (as opposed to simctl). So, quit the
&gt; &gt; -        # iOS Simulator app to shutdown testing_device.
&gt; &gt; -        # FIXME: &lt;rdar://problem/20916140&gt; Switch to using CoreSimulator.framework for launching and quitting iOS Simulator
&gt; &gt; -        self._executive.run_command([&apos;osascript&apos;, &apos;-e&apos;, &apos;tell application id &quot;com.apple.iphonesimulator&quot; to quit&apos;])
&gt; &gt; -        Simulator.wait_until_device_is_in_state(testing_device.udid, Simulator.DeviceState.SHUTDOWN)
&gt; &gt; -
&gt; 
&gt; Actually, we need this code to handle the scenario where a person launched
&gt; the iOS Simulator with simulator device testing_device and then subsequently
&gt; runs run-webkit-test --ios-simulator (this is implied by the comment on
&gt; lines 242 - 244). So, I suggest that we extract the common code into shared
&gt; function, say _quitIOSSimulator, that we call from both here and
&gt; clean_up_test_run().

Disregard this comment. We also need to move the logic for quitting the simulator from IOSSimulatorPort.check_sys_deps() to IOSSimulatorPort.reset_preferences(). Otherwise, we will hit this bug when a person launches the testing device in iOS Simulator and subsequently runs run-webkit-tests --ios-simulator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120724</commentid>
    <comment_count>8</comment_count>
      <attachid>259884</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2015-08-25 14:58:19 -0700</bug_when>
    <thetext>Created attachment 259884
Proposed patch

Made the changes as discussed.

Quitting the simulator both during the cleanup as well as at the beginning of layout_tests (during the reset_preferences).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120728</commentid>
    <comment_count>9</comment_count>
      <attachid>259884</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-25 15:05:05 -0700</bug_when>
    <thetext>Comment on attachment 259884
Proposed patch

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

&gt; Tools/ChangeLog:12
&gt; +        (IOSSimulatorPort._quitIOSSimulator): common function to quit IOSSimulator.

Nit: common =&gt; Common
IOSSimulator =&gt; iOS Simulator

&gt; Tools/ChangeLog:14
&gt; +        (IOSSimulatorPort.check_sys_deps): No need to quit the simulator here as its now being quit in reset_preferences.

Nit: reset_preferences =&gt; reset_preferences()

&gt; Tools/Scripts/webkitpy/port/ios.py:80
&gt; +    SIMULATOR_BUNDLE_ID = &quot;com.apple.iphonesimulator&quot;

Nit: &apos; (single quote) =&gt; &quot; (double quote)

&gt; Tools/Scripts/webkitpy/port/ios.py:213
&gt; +    def _quitIOSSimulator(self):

I didn&apos;t meant to steer you wrong on the naming of this function. We name functions with underscores between words. So, this function should be named _quit_ios_simulator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120755</commentid>
    <comment_count>10</comment_count>
      <attachid>259893</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2015-08-25 16:05:52 -0700</bug_when>
    <thetext>Created attachment 259893
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120794</commentid>
    <comment_count>11</comment_count>
      <attachid>259893</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-08-25 18:14:58 -0700</bug_when>
    <thetext>Comment on attachment 259893
Proposed patch

Thank you Aakash for updating the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120806</commentid>
    <comment_count>12</comment_count>
      <attachid>259893</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 19:01:58 -0700</bug_when>
    <thetext>Comment on attachment 259893
Proposed patch

Clearing flags on attachment: 259893

Committed r188942: &lt;http://trac.webkit.org/changeset/188942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1120807</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-25 19:02:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259414</attachid>
            <date>2015-08-19 15:30:07 -0700</date>
            <delta_ts>2015-08-20 18:59:15 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch-Simulator1</filename>
            <type>text/plain</type>
            <size>1419</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4ODY1MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE0IEBACisyMDE1LTA4LTE5ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBpT1MgU2ltdWxhdG9yIGxheW91dC10ZXN0cyBmYWlsIHRvIHN0YXJ0IHdo
aWxlIGNsZWFuaW5nIGEgZGlyZWN0b3J5IHN0cnVjdHVyZSBpZiBzaW11bGF0b3IgaXMgYWxyZWFk
eSBydW5uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHk6CisgICAgICAgIChJT1NTaW11bGF0b3JQ
b3J0KToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQucmVzZXRfcHJlZmVyZW5jZXMpOgorCiAy
MDE1LTA4LTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQnVpbGQgVGVzdFdURiBvbiBNYWMgd2l0aCBDTWFrZS4KSW5kZXg6IFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9pb3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weQkocmV2aXNpb24gMTg4NjUzKQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzc5LDYgKzM3OSwxMCBAQCBj
bGFzcyBJT1NTaW11bGF0b3JQb3J0KFBvcnQpOgogCiAgICAgZGVmIHJlc2V0X3ByZWZlcmVuY2Vz
KHNlbGYpOgogICAgICAgICBkYXRhX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0aW5nX2Rl
dmljZS5wYXRoLCAnZGF0YScpCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChb
J29zYXNjcmlwdCcsICctZScsICd0ZWxsIGFwcGxpY2F0aW9uIGlkICJjb20uYXBwbGUuaXBob25l
c2ltdWxhdG9yIiB0byBxdWl0J10pCisgICAgICAgIHF1aXRfZGVsYXkgPSA1CisgICAgICAgIF9s
b2cuZGVidWcoJ1dhaXRpbmcge3NlY29uZHN9IHNlY29uZHMgZm9yIGFueSBvbGQgaU9TIFNpbXVs
YXRvciBpbnN0YW5jZSB0byBxdWl0IC4uLicuZm9ybWF0KHNlY29uZHM9cXVpdF9kZWxheSkpCisg
ICAgICAgIHRpbWUuc2xlZXAocXVpdF9kZWxheSkKICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihk
YXRhX3BhdGgpOgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkYXRhX3BhdGgpCiAK
</data>
<flag name="review"
          id="284590"
          type_id="1"
          status="-"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="284591"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259560</attachid>
            <date>2015-08-20 18:59:15 -0700</date>
            <delta_ts>2015-08-25 14:58:19 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch-Simulator3</filename>
            <type>text/plain</type>
            <size>3285</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4ODczMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDE1LTA4LTIwICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBpT1MgU2ltdWxhdG9yIGxheW91dC10ZXN0cyBmYWlsIHRvIHN0YXJ0IHdo
aWxlIGNsZWFuaW5nIGEgZGlyZWN0b3J5IHN0cnVjdHVyZSBpZiBzaW11bGF0b3IgaXMgYWxyZWFk
eSBydW5uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxOTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjIzMzQzODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2tp
bGwtb2xkLXByb2Nlc3NlczogQWRkIFNpbXVsYXRvciB0byB0aGUgbGlzdCBvZiBwcm9jZXNzZXMg
dG8ga2lsbCAoZm9yIGlPUyBidWlsZGVycykuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5OgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydCk6
CisgICAgICAgIChJT1NTaW11bGF0b3JQb3J0LmNsZWFuX3VwX3Rlc3RfcnVuKTogUXVpdCB0aGUg
c2ltdWxhdG9yIGR1cmluZyB0aGUgY2xlYW51cC4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQu
Y2hlY2tfc3lzX2RlcHMpOiBObyBuZWVkIHRvIHF1aXQgdGhlIHNpbXVsYXRvciBhdCBiZWduaW5u
aW5nIGFzIHdlIGFscmVhZHkgZW5zdXJlIHRoYXQgc2ltdWxhdG9yIGlzIG5vdCBydW5uaW5nLgor
CiAyMDE1LTA4LTIwICBEZXZpbiBSb3Vzc28gIDxkY3JvdXNzbyt3ZWJraXRAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIGNoYW5nZWQgRGV2aW4gUm91c3NvJ3MgZW1haWwuCkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzCShyZXZpc2lvbiAx
ODg3MzMpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMJKHdv
cmtpbmcgY29weSkKQEAgLTg1LDYgKzg1LDcgQEAgZGVmIG1haW4oKToKICAgICAgICAgIldlYktp
dFRlc3RSdW5uZXIiLAogICAgICAgICAiV2ViUHJvY2VzcyIsCiAgICAgICAgICJ4Y29kZWJ1aWxk
IiwKKyAgICAgICAgIlNpbXVsYXRvciIgICNGSVhNRTogQ29uc2lkZXIgbW92aW5nIGlPUy1TcGVj
aWZpYyB0YXNrcyB0byB0aGVpciBvd24gbGlzdAogICAgIF0KIAogICAgIHRhc2tUb0tpbGxVbml4
ID0gWwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CShyZXZpc2lvbiAxODg3MzMp
CisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0yMTAsNiArMjEwLDkgQEAgY2xhc3MgSU9TU2ltdWxhdG9yUG9ydChQb3J0KToKIAogICAgIGRl
ZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgc3VwZXIoSU9TU2ltdWxhdG9yUG9y
dCwgc2VsZikuY2xlYW5fdXBfdGVzdF9ydW4oKQorICAgICAgICAjIEZJWE1FOiA8cmRhcjovL3By
b2JsZW0vMjA5MTYxNDA+IFN3aXRjaCB0byB1c2luZyBDb3JlU2ltdWxhdG9yLmZyYW1ld29yayBm
b3IgbGF1bmNoaW5nIGFuZCBxdWl0dGluZyBpT1MgU2ltdWxhdG9yCisgICAgICAgIHNlbGYuX2V4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ29zYXNjcmlwdCcsICctZScsICd0ZWxsIGFwcGxpY2F0aW9u
IGlkICJjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yIiB0byBxdWl0J10pCisKICAgICAgICAgZmlm
b3MgPSBbcGF0aCBmb3IgcGF0aCBpbiBvcy5saXN0ZGlyKCcvdG1wJykgaWYgcmUuc2VhcmNoKCdv
cmcud2Via2l0LihEdW1wUmVuZGVyVHJlZXxXZWJLaXRUZXN0UnVubmVyKS4qXyhJTnxPVVR8RVJS
T1IpJywgcGF0aCldCiAgICAgICAgIGZvciBmaWZvIGluIGZpZm9zOgogICAgICAgICAgICAgdHJ5
OgpAQCAtMjM5LDEzICsyNDIsNiBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0KFBvcnQpOgogICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHRlc3RpbmdfZGV2aWNlID0gc2VsZi50ZXN0
aW5nX2RldmljZSAgIyBNYXkgY3JlYXRlIGEgbmV3IHNpbXVsYXRvciBkZXZpY2UKIAotICAgICAg
ICAjIHRlc3RpbmdfZGV2aWNlIHdpbGwgZmFpbCB0byBib290IGlmIGl0IGlzIGFscmVhZHkgYm9v
dGVkLiBXZSBhc3N1bWUgdGhhdCBpZiB0ZXN0aW5nX2RldmljZQotICAgICAgICAjIGlzIGJvb3Rl
ZCB0aGF0IGl0IHdhcyBib290ZWQgYnkgdGhlIGlPUyBTaW11bGF0b3IgYXBwIChhcyBvcHBvc2Vk
IHRvIHNpbWN0bCkuIFNvLCBxdWl0IHRoZQotICAgICAgICAjIGlPUyBTaW11bGF0b3IgYXBwIHRv
IHNodXRkb3duIHRlc3RpbmdfZGV2aWNlLgotICAgICAgICAjIEZJWE1FOiA8cmRhcjovL3Byb2Js
ZW0vMjA5MTYxNDA+IFN3aXRjaCB0byB1c2luZyBDb3JlU2ltdWxhdG9yLmZyYW1ld29yayBmb3Ig
bGF1bmNoaW5nIGFuZCBxdWl0dGluZyBpT1MgU2ltdWxhdG9yCi0gICAgICAgIHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbJ29zYXNjcmlwdCcsICctZScsICd0ZWxsIGFwcGxpY2F0aW9uIGlk
ICJjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yIiB0byBxdWl0J10pCi0gICAgICAgIFNpbXVsYXRv
ci53YWl0X3VudGlsX2RldmljZV9pc19pbl9zdGF0ZSh0ZXN0aW5nX2RldmljZS51ZGlkLCBTaW11
bGF0b3IuRGV2aWNlU3RhdGUuU0hVVERPV04pCi0KICAgICAgICAgaWYgbm90IFNpbXVsYXRvci5j
aGVja19zaW11bGF0b3JfZGV2aWNlX2FuZF9lcmFzZV9pZl9uZWVkZWQoc2VsZi5ob3N0LCB0ZXN0
aW5nX2RldmljZS51ZGlkKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1VuYWJsZSB0byBib290
IHRoZSBzaW11bGF0b3IgZGV2aWNlIHdpdGggVURJRCB7MH0uJy5mb3JtYXQodGVzdGluZ19kZXZp
Y2UudWRpZCkpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
</data>
<flag name="review"
          id="284751"
          type_id="1"
          status="-"
          setter="dbates"
    />
    <flag name="commit-queue"
          id="284752"
          type_id="3"
          status="-"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259884</attachid>
            <date>2015-08-25 14:58:19 -0700</date>
            <delta_ts>2015-08-25 16:05:52 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch-Simulator4</filename>
            <type>text/plain</type>
            <size>5169</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4ODkzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE1LTA4LTI1ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBpT1MgU2ltdWxhdG9yIGxheW91dC10ZXN0cyBmYWlsIHRvIHN0YXJ0IHdo
aWxlIGNsZWFuaW5nIGEgZGlyZWN0b3J5IHN0cnVjdHVyZSBpZiBzaW11bGF0b3IgaXMgYWxyZWFk
eSBydW5uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxOTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjIzMzQzODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2tp
bGwtb2xkLXByb2Nlc3NlczogQWRkIFNpbXVsYXRvciB0byB0aGUgbGlzdCBvZiBwcm9jZXNzZXMg
dG8ga2lsbCAoZm9yIGlPUyBidWlsZGVycykuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvcy5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQpOiBDb252ZXJ0ZWQgYnVuZGxl
IGlkIGNvbS5hcHBsZS5pcGhvbmVzaW11bGF0b3IgdG8gYSB2YXJpYWJsZSBTSU1VTEFUT1JfQlVO
RExFX0lELgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5fcXVpdElPU1NpbXVsYXRvcik6IGNv
bW1vbiBmdW5jdGlvbiB0byBxdWl0IElPU1NpbXVsYXRvci4KKyAgICAgICAgKElPU1NpbXVsYXRv
clBvcnQuY2xlYW5fdXBfdGVzdF9ydW4pOiBRdWl0IHRoZSBzaW11bGF0b3IgZHVyaW5nIHRoZSBj
bGVhbnVwLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5jaGVja19zeXNfZGVwcyk6IE5vIG5l
ZWQgdG8gcXVpdCB0aGUgc2ltdWxhdG9yIGhlcmUgYXMgaXRzIG5vdyBiZWluZyBxdWl0IGluIHJl
c2V0X3ByZWZlcmVuY2VzLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5yZXNldF9wcmVmZXJl
bmNlcyk6IFF1aXQgdGhlIHNpbXVsYXRvciBiZWZvcmUgdHJ5aW5nIHRvIGRlbGV0ZSBhc3NvY2lh
dGVkIGRhdGEgZGlyZWN0b3J5LgorCiAyMDE1LTA4LTI1ICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW01hY10gYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1dGVz
Lmh0bWwgZmFpbHMKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXByb2Nl
c3Nlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1wcm9j
ZXNzZXMJKHJldmlzaW9uIDE4ODkzMikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwt
b2xkLXByb2Nlc3Nlcwkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBkZWYgbWFpbigp
OgogICAgICAgICAiV2ViS2l0VGVzdFJ1bm5lciIsCiAgICAgICAgICJXZWJQcm9jZXNzIiwKICAg
ICAgICAgInhjb2RlYnVpbGQiLAorICAgICAgICAiU2ltdWxhdG9yIiAgIyBGSVhNRTogQ29uc2lk
ZXIgbW92aW5nIGlPUy1zcGVjaWZpYyB0YXNrcyB0byB0aGVpciBvd24gbGlzdC4KICAgICBdCiAK
ICAgICB0YXNrVG9LaWxsVW5peCA9IFsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pb3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5w
eQkocmV2aXNpb24gMTg4OTMyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lvcy5w
eQkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsOCBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0
KFBvcnQpOgogCiAgICAgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2XzY0JwogCisgICAgU0lN
VUxBVE9SX0JVTkRMRV9JRCA9ICJjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yIgorCiAgICAgcmVs
YXlfbmFtZSA9ICdMYXlvdXRUZXN0UmVsYXknCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKQEAgLTE5OSw3ICsyMDEsNyBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0
KFBvcnQpOgogICAgICAgICBkZXZpY2VfdWRpZCA9IHNlbGYudGVzdGluZ19kZXZpY2UudWRpZAog
ICAgICAgICAjIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMjA5MTYxNDA+IFN3aXRjaCB0byB1c2lu
ZyBDb3JlU2ltdWxhdG9yLmZyYW1ld29yayBmb3IgbGF1bmNoaW5nIGFuZCBxdWl0dGluZyBpT1Mg
U2ltdWxhdG9yCiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCi0gICAgICAg
ICAgICAnb3BlbicsICctYicsICdjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yJywKKyAgICAgICAg
ICAgICdvcGVuJywgJy1iJywgc2VsZi5TSU1VTEFUT1JfQlVORExFX0lELAogICAgICAgICAgICAg
Jy0tYXJncycsICctQ3VycmVudERldmljZVVESUQnLCBkZXZpY2VfdWRpZF0pCiAgICAgICAgIFNp
bXVsYXRvci53YWl0X3VudGlsX2RldmljZV9pc19pbl9zdGF0ZShkZXZpY2VfdWRpZCwgU2ltdWxh
dG9yLkRldmljZVN0YXRlLkJPT1RFRCkKIApAQCAtMjA4LDggKzIxMCwxMyBAQCBjbGFzcyBJT1NT
aW11bGF0b3JQb3J0KFBvcnQpOgogICAgICAgICBfbG9nLmRlYnVnKCdXYWl0aW5nIHtzZWNvbmRz
fSBzZWNvbmRzIGZvciBpT1MgU2ltdWxhdG9yIHRvIGZpbmlzaCBib290aW5nIC4uLicuZm9ybWF0
KHNlY29uZHM9Ym9vdF9kZWxheSkpCiAgICAgICAgIHRpbWUuc2xlZXAoYm9vdF9kZWxheSkKIAor
ICAgIGRlZiBfcXVpdElPU1NpbXVsYXRvcihzZWxmKToKKyAgICAgICAgIyBGSVhNRTogPHJkYXI6
Ly9wcm9ibGVtLzIwOTE2MTQwPiBTd2l0Y2ggdG8gdXNpbmcgQ29yZVNpbXVsYXRvci5mcmFtZXdv
cmsgZm9yIGxhdW5jaGluZyBhbmQgcXVpdHRpbmcgaU9TIFNpbXVsYXRvcgorICAgICAgICBzZWxm
Ll9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydvc2FzY3JpcHQnLCAnLWUnLCAndGVsbCBhcHBsaWNh
dGlvbiBpZCAiezB9IiB0byBxdWl0Jy5mb3JtYXQoc2VsZi5TSU1VTEFUT1JfQlVORExFX0lEKV0p
CisKICAgICBkZWYgY2xlYW5fdXBfdGVzdF9ydW4oc2VsZik6CiAgICAgICAgIHN1cGVyKElPU1Np
bXVsYXRvclBvcnQsIHNlbGYpLmNsZWFuX3VwX3Rlc3RfcnVuKCkKKyAgICAgICAgc2VsZi5fcXVp
dElPU1NpbXVsYXRvcigpCiAgICAgICAgIGZpZm9zID0gW3BhdGggZm9yIHBhdGggaW4gb3MubGlz
dGRpcignL3RtcCcpIGlmIHJlLnNlYXJjaCgnb3JnLndlYmtpdC4oRHVtcFJlbmRlclRyZWV8V2Vi
S2l0VGVzdFJ1bm5lcikuKl8oSU58T1VUfEVSUk9SKScsIHBhdGgpXQogICAgICAgICBmb3IgZmlm
byBpbiBmaWZvczoKICAgICAgICAgICAgIHRyeToKQEAgLTIzOSwxMyArMjQ2LDYgQEAgY2xhc3Mg
SU9TU2ltdWxhdG9yUG9ydChQb3J0KToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAg
ICB0ZXN0aW5nX2RldmljZSA9IHNlbGYudGVzdGluZ19kZXZpY2UgICMgTWF5IGNyZWF0ZSBhIG5l
dyBzaW11bGF0b3IgZGV2aWNlCiAKLSAgICAgICAgIyB0ZXN0aW5nX2RldmljZSB3aWxsIGZhaWwg
dG8gYm9vdCBpZiBpdCBpcyBhbHJlYWR5IGJvb3RlZC4gV2UgYXNzdW1lIHRoYXQgaWYgdGVzdGlu
Z19kZXZpY2UKLSAgICAgICAgIyBpcyBib290ZWQgdGhhdCBpdCB3YXMgYm9vdGVkIGJ5IHRoZSBp
T1MgU2ltdWxhdG9yIGFwcCAoYXMgb3Bwb3NlZCB0byBzaW1jdGwpLiBTbywgcXVpdCB0aGUKLSAg
ICAgICAgIyBpT1MgU2ltdWxhdG9yIGFwcCB0byBzaHV0ZG93biB0ZXN0aW5nX2RldmljZS4KLSAg
ICAgICAgIyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzIwOTE2MTQwPiBTd2l0Y2ggdG8gdXNpbmcg
Q29yZVNpbXVsYXRvci5mcmFtZXdvcmsgZm9yIGxhdW5jaGluZyBhbmQgcXVpdHRpbmcgaU9TIFNp
bXVsYXRvcgotICAgICAgICBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydvc2FzY3JpcHQn
LCAnLWUnLCAndGVsbCBhcHBsaWNhdGlvbiBpZCAiY29tLmFwcGxlLmlwaG9uZXNpbXVsYXRvciIg
dG8gcXVpdCddKQotICAgICAgICBTaW11bGF0b3Iud2FpdF91bnRpbF9kZXZpY2VfaXNfaW5fc3Rh
dGUodGVzdGluZ19kZXZpY2UudWRpZCwgU2ltdWxhdG9yLkRldmljZVN0YXRlLlNIVVRET1dOKQot
CiAgICAgICAgIGlmIG5vdCBTaW11bGF0b3IuY2hlY2tfc2ltdWxhdG9yX2RldmljZV9hbmRfZXJh
c2VfaWZfbmVlZGVkKHNlbGYuaG9zdCwgdGVzdGluZ19kZXZpY2UudWRpZCk6CiAgICAgICAgICAg
ICBfbG9nLmVycm9yKCdVbmFibGUgdG8gYm9vdCB0aGUgc2ltdWxhdG9yIGRldmljZSB3aXRoIFVE
SUQgezB9LicuZm9ybWF0KHRlc3RpbmdfZGV2aWNlLnVkaWQpKQogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCkBAIC0zNzgsNiArMzc4LDExIEBAIGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6
CiAgICAgICAgIHJldHVybiBzZWxmLl9pbWFnZV9kaWZmZXIuZGlmZl9pbWFnZShleHBlY3RlZF9j
b250ZW50cywgYWN0dWFsX2NvbnRlbnRzLCB0b2xlcmFuY2UpCiAKICAgICBkZWYgcmVzZXRfcHJl
ZmVyZW5jZXMoc2VsZik6CisgICAgICAgICMgV2UgYXNzdW1lIHRoYXQgaWYgdGVzdGluZ19kZXZp
Y2UgaXMgYm9vdGVkIHRoYXQgaXQgd2FzIGJvb3RlZCBieSB0aGUgaU9TIFNpbXVsYXRvciBhcHAK
KyAgICAgICAgIyAoYXMgb3Bwb3NlZCB0byBzaW1jdGwpLiBTbywgcXVpdCB0aGUgaU9TIFNpbXVs
YXRvciBhcHAgdG8gc2h1dGRvd24gdGVzdGluZ19kZXZpY2UuCisgICAgICAgIHNlbGYuX3F1aXRJ
T1NTaW11bGF0b3IoKQorICAgICAgICBTaW11bGF0b3Iud2FpdF91bnRpbF9kZXZpY2VfaXNfaW5f
c3RhdGUoc2VsZi50ZXN0aW5nX2RldmljZS51ZGlkLCBTaW11bGF0b3IuRGV2aWNlU3RhdGUuU0hV
VERPV04pCisKICAgICAgICAgZGF0YV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGluZ19k
ZXZpY2UucGF0aCwgJ2RhdGEnKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGRhdGFfcGF0aCk6
CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRhdGFfcGF0aCkK
</data>
<flag name="review"
          id="285081"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259893</attachid>
            <date>2015-08-25 16:05:52 -0700</date>
            <delta_ts>2015-08-25 19:01:58 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch-Simulator5</filename>
            <type>text/plain</type>
            <size>5178</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE4ODkzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE1LTA4LTI1ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBpT1MgU2ltdWxhdG9yIGxheW91dC10ZXN0cyBmYWlsIHRvIHN0YXJ0IHdo
aWxlIGNsZWFuaW5nIGEgZGlyZWN0b3J5IHN0cnVjdHVyZSBpZiBzaW11bGF0b3IgaXMgYWxyZWFk
eSBydW5uaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDgxOTcKKyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjIzMzQzODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2tp
bGwtb2xkLXByb2Nlc3NlczogQWRkIFNpbXVsYXRvciB0byB0aGUgbGlzdCBvZiBwcm9jZXNzZXMg
dG8ga2lsbCAoZm9yIGlPUyBidWlsZGVycykuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9w
b3J0L2lvcy5weToKKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQpOiBDb252ZXJ0ZWQgYnVuZGxl
IGlkIGNvbS5hcHBsZS5pcGhvbmVzaW11bGF0b3IgdG8gYSB2YXJpYWJsZSBTSU1VTEFUT1JfQlVO
RExFX0lELgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5fcXVpdElPU1NpbXVsYXRvcik6IENv
bW1vbiBmdW5jdGlvbiB0byBxdWl0IGlPUyBTaW11bGF0b3IuCisgICAgICAgIChJT1NTaW11bGF0
b3JQb3J0LmNsZWFuX3VwX3Rlc3RfcnVuKTogUXVpdCB0aGUgc2ltdWxhdG9yIGR1cmluZyB0aGUg
Y2xlYW51cC4KKyAgICAgICAgKElPU1NpbXVsYXRvclBvcnQuY2hlY2tfc3lzX2RlcHMpOiBObyBu
ZWVkIHRvIHF1aXQgdGhlIHNpbXVsYXRvciBoZXJlIGFzIGl0cyBub3cgYmVpbmcgcXVpdCBpbiBy
ZXNldF9wcmVmZXJlbmNlcygpLgorICAgICAgICAoSU9TU2ltdWxhdG9yUG9ydC5yZXNldF9wcmVm
ZXJlbmNlcyk6IFF1aXQgdGhlIHNpbXVsYXRvciBiZWZvcmUgdHJ5aW5nIHRvIGRlbGV0ZSBhc3Nv
Y2lhdGVkIGRhdGEgZGlyZWN0b3J5LgorCiAyMDE1LTA4LTI1ICBOYW4gV2FuZyAgPG5fd2FuZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW01hY10gYWNjZXNzaWJpbGl0eS9kb2N1bWVudC1hdHRyaWJ1
dGVzLmh0bWwgZmFpbHMKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXBy
b2Nlc3Nlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1w
cm9jZXNzZXMJKHJldmlzaW9uIDE4ODkzMikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tp
bGwtb2xkLXByb2Nlc3Nlcwkod29ya2luZyBjb3B5KQpAQCAtODUsNiArODUsNyBAQCBkZWYgbWFp
bigpOgogICAgICAgICAiV2ViS2l0VGVzdFJ1bm5lciIsCiAgICAgICAgICJXZWJQcm9jZXNzIiwK
ICAgICAgICAgInhjb2RlYnVpbGQiLAorICAgICAgICAiU2ltdWxhdG9yIiAgIyBGSVhNRTogQ29u
c2lkZXIgbW92aW5nIGlPUy1zcGVjaWZpYyB0YXNrcyB0byB0aGVpciBvd24gbGlzdC4KICAgICBd
CiAKICAgICB0YXNrVG9LaWxsVW5peCA9IFsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9pb3MucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lv
cy5weQkocmV2aXNpb24gMTg4OTMyKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2lv
cy5weQkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsOCBAQCBjbGFzcyBJT1NTaW11bGF0b3JQ
b3J0KFBvcnQpOgogCiAgICAgREVGQVVMVF9BUkNISVRFQ1RVUkUgPSAneDg2XzY0JwogCisgICAg
U0lNVUxBVE9SX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yJworCiAgICAg
cmVsYXlfbmFtZSA9ICdMYXlvdXRUZXN0UmVsYXknCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKQEAgLTE5OSw3ICsyMDEsNyBAQCBjbGFzcyBJT1NTaW11bGF0b3JQ
b3J0KFBvcnQpOgogICAgICAgICBkZXZpY2VfdWRpZCA9IHNlbGYudGVzdGluZ19kZXZpY2UudWRp
ZAogICAgICAgICAjIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vMjA5MTYxNDA+IFN3aXRjaCB0byB1
c2luZyBDb3JlU2ltdWxhdG9yLmZyYW1ld29yayBmb3IgbGF1bmNoaW5nIGFuZCBxdWl0dGluZyBp
T1MgU2ltdWxhdG9yCiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbCi0gICAg
ICAgICAgICAnb3BlbicsICctYicsICdjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yJywKKyAgICAg
ICAgICAgICdvcGVuJywgJy1iJywgc2VsZi5TSU1VTEFUT1JfQlVORExFX0lELAogICAgICAgICAg
ICAgJy0tYXJncycsICctQ3VycmVudERldmljZVVESUQnLCBkZXZpY2VfdWRpZF0pCiAgICAgICAg
IFNpbXVsYXRvci53YWl0X3VudGlsX2RldmljZV9pc19pbl9zdGF0ZShkZXZpY2VfdWRpZCwgU2lt
dWxhdG9yLkRldmljZVN0YXRlLkJPT1RFRCkKIApAQCAtMjA4LDggKzIxMCwxMyBAQCBjbGFzcyBJ
T1NTaW11bGF0b3JQb3J0KFBvcnQpOgogICAgICAgICBfbG9nLmRlYnVnKCdXYWl0aW5nIHtzZWNv
bmRzfSBzZWNvbmRzIGZvciBpT1MgU2ltdWxhdG9yIHRvIGZpbmlzaCBib290aW5nIC4uLicuZm9y
bWF0KHNlY29uZHM9Ym9vdF9kZWxheSkpCiAgICAgICAgIHRpbWUuc2xlZXAoYm9vdF9kZWxheSkK
IAorICAgIGRlZiBfcXVpdF9pb3Nfc2ltdWxhdG9yKHNlbGYpOgorICAgICAgICAjIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vMjA5MTYxNDA+IFN3aXRjaCB0byB1c2luZyBDb3JlU2ltdWxhdG9yLmZy
YW1ld29yayBmb3IgbGF1bmNoaW5nIGFuZCBxdWl0dGluZyBpT1MgU2ltdWxhdG9yCisgICAgICAg
IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ29zYXNjcmlwdCcsICctZScsICd0ZWxsIGFw
cGxpY2F0aW9uIGlkICJ7MH0iIHRvIHF1aXQnLmZvcm1hdChzZWxmLlNJTVVMQVRPUl9CVU5ETEVf
SUQpXSkKKwogICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKICAgICAgICAgc3VwZXIo
SU9TU2ltdWxhdG9yUG9ydCwgc2VsZikuY2xlYW5fdXBfdGVzdF9ydW4oKQorICAgICAgICBzZWxm
Ll9xdWl0X2lvc19zaW11bGF0b3IoKQogICAgICAgICBmaWZvcyA9IFtwYXRoIGZvciBwYXRoIGlu
IG9zLmxpc3RkaXIoJy90bXAnKSBpZiByZS5zZWFyY2goJ29yZy53ZWJraXQuKER1bXBSZW5kZXJU
cmVlfFdlYktpdFRlc3RSdW5uZXIpLipfKElOfE9VVHxFUlJPUiknLCBwYXRoKV0KICAgICAgICAg
Zm9yIGZpZm8gaW4gZmlmb3M6CiAgICAgICAgICAgICB0cnk6CkBAIC0yMzksMTMgKzI0Niw2IEBA
IGNsYXNzIElPU1NpbXVsYXRvclBvcnQoUG9ydCk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
ICAgICAgICAgdGVzdGluZ19kZXZpY2UgPSBzZWxmLnRlc3RpbmdfZGV2aWNlICAjIE1heSBjcmVh
dGUgYSBuZXcgc2ltdWxhdG9yIGRldmljZQogCi0gICAgICAgICMgdGVzdGluZ19kZXZpY2Ugd2ls
bCBmYWlsIHRvIGJvb3QgaWYgaXQgaXMgYWxyZWFkeSBib290ZWQuIFdlIGFzc3VtZSB0aGF0IGlm
IHRlc3RpbmdfZGV2aWNlCi0gICAgICAgICMgaXMgYm9vdGVkIHRoYXQgaXQgd2FzIGJvb3RlZCBi
eSB0aGUgaU9TIFNpbXVsYXRvciBhcHAgKGFzIG9wcG9zZWQgdG8gc2ltY3RsKS4gU28sIHF1aXQg
dGhlCi0gICAgICAgICMgaU9TIFNpbXVsYXRvciBhcHAgdG8gc2h1dGRvd24gdGVzdGluZ19kZXZp
Y2UuCi0gICAgICAgICMgRklYTUU6IDxyZGFyOi8vcHJvYmxlbS8yMDkxNjE0MD4gU3dpdGNoIHRv
IHVzaW5nIENvcmVTaW11bGF0b3IuZnJhbWV3b3JrIGZvciBsYXVuY2hpbmcgYW5kIHF1aXR0aW5n
IGlPUyBTaW11bGF0b3IKLSAgICAgICAgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnb3Nh
c2NyaXB0JywgJy1lJywgJ3RlbGwgYXBwbGljYXRpb24gaWQgImNvbS5hcHBsZS5pcGhvbmVzaW11
bGF0b3IiIHRvIHF1aXQnXSkKLSAgICAgICAgU2ltdWxhdG9yLndhaXRfdW50aWxfZGV2aWNlX2lz
X2luX3N0YXRlKHRlc3RpbmdfZGV2aWNlLnVkaWQsIFNpbXVsYXRvci5EZXZpY2VTdGF0ZS5TSFVU
RE9XTikKLQogICAgICAgICBpZiBub3QgU2ltdWxhdG9yLmNoZWNrX3NpbXVsYXRvcl9kZXZpY2Vf
YW5kX2VyYXNlX2lmX25lZWRlZChzZWxmLmhvc3QsIHRlc3RpbmdfZGV2aWNlLnVkaWQpOgogICAg
ICAgICAgICAgX2xvZy5lcnJvcignVW5hYmxlIHRvIGJvb3QgdGhlIHNpbXVsYXRvciBkZXZpY2Ug
d2l0aCBVRElEIHswfS4nLmZvcm1hdCh0ZXN0aW5nX2RldmljZS51ZGlkKSkKICAgICAgICAgICAg
IHJldHVybiBGYWxzZQpAQCAtMzc4LDYgKzM3OCwxMSBAQCBjbGFzcyBJT1NTaW11bGF0b3JQb3J0
KFBvcnQpOgogICAgICAgICByZXR1cm4gc2VsZi5faW1hZ2VfZGlmZmVyLmRpZmZfaW1hZ2UoZXhw
ZWN0ZWRfY29udGVudHMsIGFjdHVhbF9jb250ZW50cywgdG9sZXJhbmNlKQogCiAgICAgZGVmIHJl
c2V0X3ByZWZlcmVuY2VzKHNlbGYpOgorICAgICAgICAjIFdlIGFzc3VtZSB0aGF0IGlmIHRlc3Rp
bmdfZGV2aWNlIGlzIGJvb3RlZCB0aGF0IGl0IHdhcyBib290ZWQgYnkgdGhlIGlPUyBTaW11bGF0
b3IgYXBwCisgICAgICAgICMgKGFzIG9wcG9zZWQgdG8gc2ltY3RsKS4gU28sIHF1aXQgdGhlIGlP
UyBTaW11bGF0b3IgYXBwIHRvIHNodXRkb3duIHRlc3RpbmdfZGV2aWNlLgorICAgICAgICBzZWxm
Ll9xdWl0X2lvc19zaW11bGF0b3IoKQorICAgICAgICBTaW11bGF0b3Iud2FpdF91bnRpbF9kZXZp
Y2VfaXNfaW5fc3RhdGUoc2VsZi50ZXN0aW5nX2RldmljZS51ZGlkLCBTaW11bGF0b3IuRGV2aWNl
U3RhdGUuU0hVVERPV04pCisKICAgICAgICAgZGF0YV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYu
dGVzdGluZ19kZXZpY2UucGF0aCwgJ2RhdGEnKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGRh
dGFfcGF0aCk6CiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRhdGFfcGF0aCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>