<?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>146271</bug_id>
          
          <creation_ts>2015-06-23 18:27:52 -0700</creation_ts>
          <short_desc>[Content Extensions] Block synchronous XMLHTTPRequests</short_desc>
          <delta_ts>2015-07-02 11:34:26 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1104289</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-23 18:27:52 -0700</bug_when>
    <thetext>Synchronous loads are currently not blocked.  Let&apos;s block them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104292</commentid>
    <comment_count>1</comment_count>
      <attachid>255466</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-23 18:44:54 -0700</bug_when>
    <thetext>Created attachment 255466
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104293</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-23 18:46:41 -0700</bug_when>
    <thetext>It does seem strange to have blocked synchronous requests throw an exception but a asynchronous request just does nothing.  Feedback would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104310</commentid>
    <comment_count>3</comment_count>
      <attachid>255466</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-23 20:43:36 -0700</bug_when>
    <thetext>Comment on attachment 255466
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        http://www.w3.org/TR/2007/WD-XMLHttpRequest-20070618/#exceptions

I don&apos;t know if anything changed in this regard, but this is an extremely old draft that is entirely obsolete.

&gt; Source/WebCore/ChangeLog:10
&gt; +        This also adds a test for blocking asynchronous XMLHTTPRequests, which just does not call 

This doesn&apos;t seem like good behavior.

&gt; Source/WebCore/ChangeLog:11
&gt; +        onreadystatechange because it never actually sends the request.

Why not handle that as an error case, with onreadystatechange and onerror?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104498</commentid>
    <comment_count>4</comment_count>
      <attachid>255466</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-24 15:01:32 -0700</bug_when>
    <thetext>Comment on attachment 255466
Patch

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

Besides Alexey’s comments, I have some comments about the specifics of the code.

&gt; Source/WebCore/loader/FrameLoader.cpp:3018
&gt; +    String urlForError = newRequest.url().string();

Please don’t compute this unused string.

&gt; Source/WebCore/loader/FrameLoader.cpp:3020
&gt; +    if (m_frame.mainFrame().page() &amp;&amp; m_frame.mainFrame().page()-&gt;userContentController() &amp;&amp; m_documentLoader)
&gt; +        m_frame.mainFrame().page()-&gt;userContentController()-&gt;processContentExtensionRulesForLoad(*m_frame.mainFrame().page(), newRequest, ResourceType::Raw, *m_documentLoader);

I suggest writing this nested thing:

    if (m_documentLoader) {
        if (auto* page = m_frame.page()) {
            if (auto* controller = page-&gt;userContentController())
                controller-&gt;processContentExtensionRulesForLoad(*page, newRequest, ResourceType::Raw, *m_documentLoader);
        }
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105458</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-06-29 12:20:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/21573006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106321</commentid>
    <comment_count>6</comment_count>
      <attachid>255992</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-01 22:53:03 -0700</bug_when>
    <thetext>Created attachment 255992
Patch v2 - Taking over from Alex</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106322</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-01 22:54:37 -0700</bug_when>
    <thetext>Attachment 255992 did not pass style-queue:


ERROR: Source/WebCore/loader/FrameLoader.cpp:95:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106388</commentid>
    <comment_count>8</comment_count>
      <attachid>256011</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2015-07-02 08:37:43 -0700</bug_when>
    <thetext>Created attachment 256011
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106426</commentid>
    <comment_count>9</comment_count>
      <attachid>256011</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 11:34:22 -0700</bug_when>
    <thetext>Comment on attachment 256011
Patch v3

Clearing flags on attachment: 256011

Committed r186228: &lt;http://trac.webkit.org/changeset/186228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106427</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 11:34:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255466</attachid>
            <date>2015-06-23 18:44:54 -0700</date>
            <delta_ts>2015-07-01 22:53:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146271-20150623184410.patch</filename>
            <type>text/plain</type>
            <size>6781</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NTg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA2LTIzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQmxvY2sgc3luY2hyb25vdXMgWE1MSFRUUFJlcXVlc3RzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYyNzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCbG9ja2luZyBzeW5jaHJvbm91
cyBYTUxIVFRQUmVxdWVzdHMgY2F1c2VzIGFuIGVycm9yIHRvIGJlIHRocm93biwgYnV0IHRoaXMg
aXMgd2hhdCBpcyBkZXNjcmliZWQgaW4KKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvMjAw
Ny9XRC1YTUxIdHRwUmVxdWVzdC0yMDA3MDYxOC8jZXhjZXB0aW9ucworICAgICAgICBUaGlzIGFs
c28gYWRkcyBhIHRlc3QgZm9yIGJsb2NraW5nIGFzeW5jaHJvbm91cyBYTUxIVFRQUmVxdWVzdHMs
IHdoaWNoIGp1c3QgZG9lcyBub3QgY2FsbCAKKyAgICAgICAgb25yZWFkeXN0YXRlY2hhbmdlIGJl
Y2F1c2UgaXQgbmV2ZXIgYWN0dWFsbHkgc2VuZHMgdGhlIHJlcXVlc3QuCisKKyAgICAgICAgVGVz
dDogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVxdWVzdHMtZmFpbC5odG1s
CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OnJlcXVlc3RGcm9tRGVsZWdhdGUpOgorICAgICAgICBEb24ndCBzZW5kIGEg
c3luY2hyb25vdXMgcmVxdWVzdCBvciBjYWxsIHdpbGxTZW5kUmVxdWVzdCBpZiB0aGUgcmVxdWVz
dCBpcyBibG9ja2VkIGJ5IGEgY29udGVudCBleHRlbnNpb24uCisKIDIwMTUtMDYtMjMgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgd2luZG93
UmVzaXplclJlY3QgY29kZSwgbm9ib2R5IGlzIHVzaW5nIGl0IGFueW1vcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMTg1ODQxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiAr
OTMsNyBAQAogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1Ry
YWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgIlJlc291cmNl
TG9hZEluZm8uaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTVkdE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgpAQCAtMTExLDYgKzExMiw3IEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERvY3Vt
ZW50UGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zMDExLDggKzMw
MTMsMTYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVxdWVzdEZyb21EZWxlZ2F0ZShSZQogICAgIH0K
IAogICAgIFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0KHJlcXVlc3QpOwotICAgIG5vdGlmaWVy
KCkuZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QobV9kb2N1bWVudExvYWRlci5nZXQoKSwgaWRlbnRp
ZmllciwgbmV3UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKLQorICAgIAorI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgU3RyaW5nIHVybEZvckVycm9yID0gbmV3UmVxdWVz
dC51cmwoKS5zdHJpbmcoKTsKKyAgICBpZiAobV9mcmFtZS5tYWluRnJhbWUoKS5wYWdlKCkgJiYg
bV9mcmFtZS5tYWluRnJhbWUoKS5wYWdlKCktPnVzZXJDb250ZW50Q29udHJvbGxlcigpICYmIG1f
ZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIG1fZnJhbWUubWFpbkZyYW1lKCkucGFnZSgpLT51c2Vy
Q29udGVudENvbnRyb2xsZXIoKS0+cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQo
Km1fZnJhbWUubWFpbkZyYW1lKCkucGFnZSgpLCBuZXdSZXF1ZXN0LCBSZXNvdXJjZVR5cGU6OlJh
dywgKm1fZG9jdW1lbnRMb2FkZXIpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFuZXdSZXF1ZXN0
LmlzTnVsbCgpKQorICAgICAgICBub3RpZmllcigpLmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KG1f
ZG9jdW1lbnRMb2FkZXIuZ2V0KCksIGlkZW50aWZpZXIsIG5ld1JlcXVlc3QsIFJlc291cmNlUmVz
cG9uc2UoKSk7CisgICAgCiAgICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkpCiAgICAgICAgIGVy
cm9yID0gY2FuY2VsbGVkRXJyb3IocmVxdWVzdCk7CiAgICAgZWxzZQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTg1ODk0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTUtMDYtMjMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBCbG9jayBzeW5jaHJv
bm91cyBYbWxIVFRQUmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjI3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVxdWVz
dHMtZmFpbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29udGVu
dGV4dGVuc2lvbnMveG1saHR0cHJlcXVlc3RzLWZhaWwuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVxdWVzdHMtZmFpbC5odG1sLmpz
b246IEFkZGVkLgorCiAyMDE1LTA2LTIzICBNYXR0aGV3IE1pcm1hbiAgPG1taXJtYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbXBsZXRlcyBuYXRpdmUgYmluZGluZyBkZXNjcmlwdG9ycyB3aXRo
IG5hdGl2ZSBnZXR0ZXJzIGFuZCBwb3RlbnRpYWxseSBzZXR0ZXJzLgpJbmRleDogTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVxdWVzdHMtZmFpbC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0
ZW5zaW9ucy94bWxodHRwcmVxdWVzdHMtZmFpbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3htbGh0dHByZXF1ZXN0
cy1mYWlsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDggQEAKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAyMDogQ29udGVudCBibG9ja2VyIHByZXZlbnRlZCBmcmFtZSBkaXNw
bGF5aW5nIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVx
dWVzdHMtZmFpbC5odG1sIGZyb20gbG9hZGluZyBhIHJlc291cmNlIGZyb20gaHR0cDovLzEyNy4w
LjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3Jlc291cmNlcy91cmwtYmxvY2tpbmctdGVzdC5q
cworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDMyOiBDb250ZW50IGJsb2NrZXIgcHJldmVudGVkIGZy
YW1lIGRpc3BsYXlpbmcgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2NvbnRlbnRleHRlbnNpb25zL3ht
bGh0dHByZXF1ZXN0cy1mYWlsLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3VybC1ibG9ja2lu
Zy10ZXN0LmpzCitUaGlzIHRlc3Qgc2hvdWxkIG5vdCB0aW1lIG91dC4KK1N5bmNocm9ub3VzIHN0
YXR1czogMCwgcmVhZHlTdGF0ZToxLCByZXNwb25zZVRleHQ6IAorU3luY2hyb25vdXMgc3RhdHVz
OiAwLCByZWFkeVN0YXRlOjQsIHJlc3BvbnNlVGV4dDogCitTeW5jaHJvbm91cyBlcnJvcjogRXJy
b3I6IEFCT1JUX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMgorQXN5bmNocm9ub3Vz
IHN0YXR1czogMCwgcmVhZHlTdGF0ZToxLCByZXNwb25zZVRleHQ6IAorCkluZGV4OiBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3htbGh0dHByZXF1ZXN0cy1mYWlsLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy94bWxodHRwcmVxdWVzdHMtZmFpbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVxdWVzdHMtZmFpbC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzggQEAKKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBhcHBlbmRUZXh0VG9Cb2R5KHRl
eHQpIHsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKHRleHQpKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImJyIikpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIHZhciB4aHJT
eW5jaHJvbm91cyA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHhoclN5bmNocm9ub3VzLm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBhcHBlbmRUZXh0VG9Cb2R5
KCJTeW5jaHJvbm91cyBzdGF0dXM6ICIgKyB4aHJTeW5jaHJvbm91cy5zdGF0dXMgKyAiLCByZWFk
eVN0YXRlOiIgKyB4aHJTeW5jaHJvbm91cy5yZWFkeVN0YXRlICsgIiwgcmVzcG9uc2VUZXh0OiAi
ICsgeGhyU3luY2hyb25vdXMucmVzcG9uc2VUZXh0KTsKKyAgICB9CisgICAgeGhyU3luY2hyb25v
dXMub3BlbigiR0VUIiwgInJlc291cmNlcy91cmwtYmxvY2tpbmctdGVzdC5qcyIsIGZhbHNlKTsK
KyAgICB0cnkgeworICAgICAgICB4aHJTeW5jaHJvbm91cy5zZW5kKCk7CisgICAgfSBjYXRjaCAo
ZXJyb3IpIHsKKyAgICAgICAgYXBwZW5kVGV4dFRvQm9keSgiU3luY2hyb25vdXMgZXJyb3I6ICIg
KyBlcnJvcik7CisgICAgfQorCisgICAgdmFyIHhockFzeW5jaHJvbm91cyA9IG5ldyBYTUxIdHRw
UmVxdWVzdCgpOworICAgIHhockFzeW5jaHJvbm91cy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgYXBwZW5kVGV4dFRvQm9keSgiQXN5bmNocm9ub3VzIHN0YXR1czog
IiArIHhockFzeW5jaHJvbm91cy5zdGF0dXMgKyAiLCByZWFkeVN0YXRlOiIgKyB4aHJBc3luY2hy
b25vdXMucmVhZHlTdGF0ZSArICIsIHJlc3BvbnNlVGV4dDogIiArIHhockFzeW5jaHJvbm91cy5y
ZXNwb25zZVRleHQpOworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgeGhyQXN5bmNocm9ub3VzLm9w
ZW4oIkdFVCIsICJyZXNvdXJjZXMvdXJsLWJsb2NraW5nLXRlc3QuanMiLCB0cnVlKTsKKyAgICB4
aHJBc3luY2hyb25vdXMuc2VuZCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9InJ1blRlc3QoKSI+CitUaGlzIHRlc3Qgc2hvdWxkIG5vdCB0aW1lIG91dC48YnIvPgorPC9i
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxo
dHRwcmVxdWVzdHMtZmFpbC5odG1sLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy94bWxodHRwcmVxdWVzdHMtZmFpbC5odG1sLmpzb24J
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25z
L3htbGh0dHByZXF1ZXN0cy1mYWlsLmh0bWwuanNvbgkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitbCisgICAgeworICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUi
OiAiYmxvY2siCisgICAgICAgIH0sCisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAgICAgICAg
InVybC1maWx0ZXIiOiAidXJsLWJsb2NraW5nLXRlc3QiCisgICAgICAgIH0KKyAgICB9CitdCg==
</data>
<flag name="review"
          id="280542"
          type_id="1"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255992</attachid>
            <date>2015-07-01 22:53:03 -0700</date>
            <delta_ts>2015-07-02 08:37:43 -0700</delta_ts>
            <desc>Patch v2 - Taking over from Alex</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5443</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NGE0OTIyLi5hMGE2Y2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDct
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtDb250ZW50
IEV4dGVuc2lvbnNdIEJsb2NrIHN5bmNocm9ub3VzIFhNTEhUVFBSZXF1ZXN0LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjE1NzMwMDY+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3N5bmMteGhyLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL3N5bmMteGhyLWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwuanNvbjogQWRkZWQuCisK
IDIwMTUtMDctMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IG1pc3Npbmcgc3BhY2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL3N5bmMteGhyLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODBkZjE3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9zeW5jLXhoci1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAyMTogQ29udGVudCBibG9ja2VyIHByZXZlbnRlZCBmcmFtZSBkaXNwbGF5
aW5nIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9j
a2VkLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3VybC1ibG9ja2luZy10ZXN0LmpzCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjE6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvdXJsLWJsb2NraW5nLXRl
c3QuanMuIAorU3luY2hyb25vdXMgc3RhdHVzOiAwLCByZWFkeVN0YXRlOjEsIHJlc3BvbnNlVGV4
dDogCitTeW5jaHJvbm91cyBzdGF0dXM6IDAsIHJlYWR5U3RhdGU6NCwgcmVzcG9uc2VUZXh0OiAK
K1N5bmNocm9ub3VzIGVycm9yOiBFcnJvcjogTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4
Y2VwdGlvbiAxMDEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NvbnRlbnRleHRlbnNpb25zL3N5bmMteGhyLWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NTdkNzM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0ZXh0KSB7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBsb2coIlN5bmNo
cm9ub3VzIHN0YXR1czogIiArIHhoci5zdGF0dXMgKyAiLCByZWFkeVN0YXRlOiIgKyB4aHIucmVh
ZHlTdGF0ZSArICIsIHJlc3BvbnNlVGV4dDogIiArIHhoci5yZXNwb25zZVRleHQpOworICAgIH0K
KyAgICAKKyAgICB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy91cmwtYmxvY2tpbmctdGVzdC5q
cyIsIGZhbHNlKTsKKyAgICB0cnkgeworICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2gg
KGVycm9yKSB7CisgICAgICAgIGxvZygiU3luY2hyb25vdXMgZXJyb3I6ICIgKyBlcnJvcik7Cisg
ICAgfQorCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwuanNvbiBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvc3luYy14aHItYmxvY2tlZC5odG1sLmpzb24KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA5ZTY2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvc3luYy14aHItYmxvY2tl
ZC5odG1sLmpzb24KQEAgLTAsMCArMSwxMCBAQAorWworICAgIHsKKyAgICAgICAgImFjdGlvbiI6
IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9LAorICAgICAgICAidHJp
Z2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogInVybC1ibG9ja2luZy10ZXN0Igor
ICAgICAgICB9CisgICAgfQorXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4MjkxZmIuLmE5NTZiMzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDctMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIEJsb2NrIHN5bmNo
cm9ub3VzIFhNTEhUVFBSZXF1ZXN0LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE1NzMwMDY+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjcxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwKKworICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6IElmIGNvbnRlbnQgYmxvY2tlZCwgc2V0IHVwIGFu
IGVycm9yLCBjbGVhcgorICAgICAgICAgIHRoZSByZXNwb25zZSwgYW5kIGNsZWFyIHRoZSByZXNw
b25zZSBkYXRhLgorCiAyMDE1LTA3LTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBEaXNhYmxlIHRoZSBleHBlcmltZW50YWwgV2ViR0wyIGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxZTQ5NTU3Li5jOWY2Mjgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTkyLDYgKzkyLDcgQEAK
ICNpbmNsdWRlICJQbHVnaW5Eb2N1bWVudC5oIgogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIK
ICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZv
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVl
c3QuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgpAQCAtMTExLDYgKzExMiw3IEBACiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdWJmcmFtZUxvYWRlci5oIgogI2luY2x1ZGUg
IlRleHRSZXNvdXJjZURlY29kZXIuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFy
c2VyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0yNjkxLDYgKzI2OTMsMjMg
QEAgdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXUKICAgICBSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVz
dChpbml0aWFsUmVxdWVzdCk7CiAgICAgcmVxdWVzdEZyb21EZWxlZ2F0ZShuZXdSZXF1ZXN0LCBp
ZGVudGlmaWVyLCBlcnJvcik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAg
IGlmIChlcnJvci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9kb2N1bWVudExvYWRlcikgewor
ICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvKiBjb250cm9sbGVyID0gcGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVy
KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xsZXItPnByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKCpwYWdlLCBuZXdSZXF1ZXN0LCBSZXNvdXJjZVR5cGU6OlJhdywgKm1f
ZG9jdW1lbnRMb2FkZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAobmV3UmVxdWVzdC5pc051bGwoKSkgeworICAgICAgICAgICAgZXJyb3IgPSBSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGluaXRpYWxSZXF1ZXN0LnVy
bCgpLnN0cmluZygpLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gUmVz
b3VyY2VSZXNwb25zZSgpOworICAgICAgICAgICAgZGF0YSA9IG51bGxwdHI7CisgICAgICAgIH0K
KyAgICB9CisjZW5kaWYKKwogICAgIGlmIChlcnJvci5pc051bGwoKSkgewogICAgICAgICBBU1NF
UlQoIW5ld1JlcXVlc3QuaXNOdWxsKCkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256011</attachid>
            <date>2015-07-02 08:37:43 -0700</date>
            <delta_ts>2015-07-02 11:34:22 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5441</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NGE0OTIyLi5hMGE2Y2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDct
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtDb250ZW50
IEV4dGVuc2lvbnNdIEJsb2NrIHN5bmNocm9ub3VzIFhNTEhUVFBSZXF1ZXN0LgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMjE1NzMwMDY+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ2MjcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRlbnNpb25zL3N5bmMteGhyLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NvbnRlbnRleHRl
bnNpb25zL3N5bmMteGhyLWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwuanNvbjogQWRkZWQuCisK
IDIwMTUtMDctMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IG1pc3Npbmcgc3BhY2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2NvbnRlbnRleHRlbnNpb25zL3N5bmMteGhyLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODBkZjE3Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9u
cy9zeW5jLXhoci1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAyMTogQ29udGVudCBibG9ja2VyIHByZXZlbnRlZCBmcmFtZSBkaXNwbGF5
aW5nIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9j
a2VkLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvY29udGVudGV4dGVuc2lvbnMvcmVzb3VyY2VzL3VybC1ibG9ja2luZy10ZXN0LmpzCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgMjE6IFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9jb250ZW50ZXh0ZW5zaW9ucy9yZXNvdXJjZXMvdXJsLWJsb2NraW5nLXRl
c3QuanMuIAorU3luY2hyb25vdXMgc3RhdHVzOiAwLCByZWFkeVN0YXRlOjEsIHJlc3BvbnNlVGV4
dDogCitTeW5jaHJvbm91cyBzdGF0dXM6IDAsIHJlYWR5U3RhdGU6NCwgcmVzcG9uc2VUZXh0OiAK
K1N5bmNocm9ub3VzIGVycm9yOiBFcnJvcjogTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4
Y2VwdGlvbiAxMDEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2NvbnRlbnRleHRlbnNpb25zL3N5bmMteGhyLWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43NTdkNzM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZyh0ZXh0KSB7CisgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KSk7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiciIpKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdCgpIHsKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBsb2coIlN5bmNo
cm9ub3VzIHN0YXR1czogIiArIHhoci5zdGF0dXMgKyAiLCByZWFkeVN0YXRlOiIgKyB4aHIucmVh
ZHlTdGF0ZSArICIsIHJlc3BvbnNlVGV4dDogIiArIHhoci5yZXNwb25zZVRleHQpOworICAgIH0K
KyAgICAKKyAgICB4aHIub3BlbigiR0VUIiwgInJlc291cmNlcy91cmwtYmxvY2tpbmctdGVzdC5q
cyIsIGZhbHNlKTsKKyAgICB0cnkgeworICAgICAgICB4aHIuc2VuZCgpOworICAgIH0gY2F0Y2gg
KGVycm9yKSB7CisgICAgICAgIGxvZygiU3luY2hyb25vdXMgZXJyb3I6ICIgKyBlcnJvcik7Cisg
ICAgfQorCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb250ZW50
ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwuanNvbiBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29udGVudGV4dGVuc2lvbnMvc3luYy14aHItYmxvY2tlZC5odG1sLmpzb24KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA5ZTY2ZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29udGVudGV4dGVuc2lvbnMvc3luYy14aHItYmxvY2tl
ZC5odG1sLmpzb24KQEAgLTAsMCArMSwxMCBAQAorWworICAgIHsKKyAgICAgICAgImFjdGlvbiI6
IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9LAorICAgICAgICAidHJp
Z2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogInVybC1ibG9ja2luZy10ZXN0Igor
ICAgICAgICB9CisgICAgfQorXQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4MjkxZmIuLmE5NTZiMzlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMDctMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIEJsb2NrIHN5bmNo
cm9ub3VzIFhNTEhUVFBSZXF1ZXN0LgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjE1NzMwMDY+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MjcxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90
ZXN0cy9jb250ZW50ZXh0ZW5zaW9ucy9zeW5jLXhoci1ibG9ja2VkLmh0bWwKKworICAgICAgICAq
IGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6IElmIGNvbnRlbnQgYmxvY2tlZCwgc2V0IHVwIGFu
IGVycm9yLCBjbGVhcgorICAgICAgICAgIHRoZSByZXNwb25zZSwgYW5kIGNsZWFyIHRoZSByZXNw
b25zZSBkYXRhLgorCiAyMDE1LTA3LTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
IAogICAgICAgICBEaXNhYmxlIHRoZSBleHBlcmltZW50YWwgV2ViR0wyIGltcGxlbWVudGF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCAxZTQ5NTU3Li41MjJiMTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTkzLDYgKzkzLDcgQEAK
ICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRJbmZv
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQu
aCIKICNpbmNsdWRlICJTVkdMb2NhdGFibGUuaCIKQEAgLTExMSw2ICsxMTIsNyBAQAogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJU
ZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiV2luZG93RmVhdHVyZXMuaCIKICNpbmNsdWRlICJYTUxEb2N1bWVudFBhcnNl
ci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMjY5MSw2ICsyNjkzLDIzIEBA
IHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3Qo
aW5pdGlhbFJlcXVlc3QpOwogICAgIHJlcXVlc3RGcm9tRGVsZWdhdGUobmV3UmVxdWVzdCwgaWRl
bnRpZmllciwgZXJyb3IpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBp
ZiAoZXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKKyAg
ICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IHBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcigp
KQorICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLT5wcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yTG9hZCgqcGFnZSwgbmV3UmVxdWVzdCwgUmVzb3VyY2VUeXBlOjpSYXcsICptX2Rv
Y3VtZW50TG9hZGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKG5ld1JlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGVycm9yID0gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBpbml0aWFsUmVxdWVzdC51cmwo
KS5zdHJpbmcoKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgICAgICByZXNwb25zZSA9IFJlc291
cmNlUmVzcG9uc2UoKTsKKyAgICAgICAgICAgIGRhdGEgPSBudWxscHRyOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmCisKICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgQVNTRVJU
KCFuZXdSZXF1ZXN0LmlzTnVsbCgpKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>