<?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>134984</bug_id>
          
          <creation_ts>2014-07-16 10:07:45 -0700</creation_ts>
          <short_desc>Add WebSecurityOrigin &quot;webSecurityOriginFromDatabaseIdentifier&quot; SPI and change _websiteDataURLForContainerWithURL: SPI</short_desc>
          <delta_ts>2014-07-16 20:32:14 -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>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1022758</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 10:07:45 -0700</bug_when>
    <thetext>Add WebSecurityOrigin &quot;webSecurityOriginFromDatabaseIdentifier&quot; SPI

&lt;rdar://problem/17454712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022759</commentid>
    <comment_count>1</comment_count>
      <attachid>235002</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 10:11:52 -0700</bug_when>
    <thetext>Created attachment 235002
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022760</commentid>
    <comment_count>2</comment_count>
      <attachid>235003</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 10:15:16 -0700</bug_when>
    <thetext>Created attachment 235003
Patch 2 v1

A patch for separate review to land at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022761</commentid>
    <comment_count>3</comment_count>
      <attachid>235004</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 10:17:41 -0700</bug_when>
    <thetext>Created attachment 235004
Patch 1 v2

Weird encoding issue preventing review?  Trying again...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022798</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 12:38:44 -0700</bug_when>
    <thetext>An additional change is needed.

Will combine these two patches with that change when uploading a new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022813</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 13:41:46 -0700</bug_when>
    <thetext>Retitled to:
Add WebSecurityOrigin &quot;webSecurityOriginFromDatabaseIdentifier&quot; SPI and change _websiteDataURLForContainerWithURL: SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022814</commentid>
    <comment_count>6</comment_count>
      <attachid>235018</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 13:43:25 -0700</bug_when>
    <thetext>Created attachment 235018
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022824</commentid>
    <comment_count>7</comment_count>
      <attachid>235018</attachid>
    <who name="">mitz</who>
    <bug_when>2014-07-16 14:18:12 -0700</bug_when>
    <thetext>Comment on attachment 235018
Patch v3

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

&gt; Source/WebKit/mac/WebCoreSupport/WebSecurityOrigin.mm:48
&gt; +    return [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin.get()];

Based on the method’s name (and lack of annotations in its declaration), this should be autoreleased.

&gt; Source/WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:37
&gt; ++ (id)webSecurityOriginFromDatabaseIdentifier:(NSString *)databaseIdentifier;

Could use a newline above this.

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:102
&gt; +    // *********
&gt; +    // IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (&lt;rdar://problem/17454712&gt;)
&gt; +    // *********

I don’t think this comment is appropriate. In principle, we shouldn’t change the location and structure of any persistent user data between WebKit versions.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:67
&gt; +    // *********
&gt; +    // IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (&lt;rdar://problem/17454712&gt;)
&gt; +    // *********

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:47
&gt; -+ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL;
&gt; ++ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL bundleIdentifierIfNotInContainer:(NSString *)bundleIdentifier;

Why cram two APIs into one? I think you want to add something like
+ (NSURL *)_websiteDataURLForApplicationWithBundleIdentifier:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022852</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 15:57:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 235018 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235018&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebSecurityOrigin.mm:48
&gt; &gt; +    return [[WebSecurityOrigin alloc] _initWithWebCoreSecurityOrigin:origin.get()];
&gt; 
&gt; Based on the method’s name (and lack of annotations in its declaration), this should be autoreleased.

Yup.

&gt; &gt; Source/WebKit/mac/WebCoreSupport/WebSecurityOriginPrivate.h:37
&gt; &gt; ++ (id)webSecurityOriginFromDatabaseIdentifier:(NSString *)databaseIdentifier;
&gt; 
&gt; Could use a newline above this.

Sounds good.
 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:102
&gt; &gt; +    // *********
&gt; &gt; +    // IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (&lt;rdar://problem/17454712&gt;)
&gt; &gt; +    // *********
&gt; 
&gt; I don’t think this comment is appropriate. In principle, we shouldn’t change the location and structure of any persistent user data between WebKit versions.
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:67
&gt; &gt; +    // *********
&gt; &gt; +    // IMPORTANT: Do not change the directory structure for indexed databases on disk without first consulting a reviewer from Apple (&lt;rdar://problem/17454712&gt;)
&gt; &gt; +    // *********
&gt; 
&gt; Ditto.

These comments were directly requested by another Apple reviewer that I agree with.

&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:47
&gt; &gt; -+ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL;
&gt; &gt; ++ (NSURL *)_websiteDataURLForContainerWithURL:(NSURL *)containerURL bundleIdentifierIfNotInContainer:(NSString *)bundleIdentifier;
&gt; 
&gt; Why cram two APIs into one? I think you want to add something like
&gt; + (NSURL *)_websiteDataURLForApplicationWithBundleIdentifier:

The new form still needs to take the container URL and bundleID.  I can add a second form instead of overriding the first, but it does need both arguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022860</commentid>
    <comment_count>9</comment_count>
      <attachid>235033</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 16:13:11 -0700</bug_when>
    <thetext>Created attachment 235033
Patch v4

On IRC Dan and I hashed out the _websiteDataURLForContainerWithURL: change.

Made the other requested changes here in Patch v4.

The comments need to stay, but don&apos;t need to remain in the exact same form they&apos;re currently in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022944</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 20:24:08 -0700</bug_when>
    <thetext>Landed that patch in http://trac.webkit.org/changeset/171160

But we&apos;re going to keep the old SPI around, too.  Patch for that forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022945</commentid>
    <comment_count>11</comment_count>
      <attachid>235047</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 20:28:00 -0700</bug_when>
    <thetext>Created attachment 235047
Patch v5 - Reintroduce the old removed SPI (leaving everything else about the already landed patch the same)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022946</commentid>
    <comment_count>12</comment_count>
      <attachid>235047</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-07-16 20:30:01 -0700</bug_when>
    <thetext>Comment on attachment 235047
Patch v5 - Reintroduce the old removed SPI (leaving everything else about the already landed patch the same)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022947</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-16 20:32:14 -0700</bug_when>
    <thetext>That landed in http://trac.webkit.org/changeset/171171</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>235002</attachid>
            <date>2014-07-16 10:11:52 -0700</date>
            <delta_ts>2014-07-16 10:17:41 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>application/octet-stream</type>
            <size>7658</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjEzYmVlLi4xNjA0NGJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE0LTA3LTE2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgV2ViU2VjdXJpdHlPcmlnaW4gIndlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNl
SWRlbnRpZmllciIgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzQ5ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcik6IEFkZCBhIGZvcm0gb2YgY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcgorICAgICAgICAgICAgdGhhdCBjYW4gZmFpbCBhbmQgcmV0dXJuIGEgbnVsbHB0ci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKTogVXNlIG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllciBiZWZvcmUgY3JlYXRp
bmcKKyAgICAgICAgICAgIHRoZSBlbXB0eSBvcmlnaW4uCisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5oOgorCiAyMDE0LTA3LTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTU1OTU3KTogSW52YWxpZCBjYXN0IGluIFdlYkNv
cmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDQ3YzliNDguLjBkZDBlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00MzQsNiArNDM0
LDcgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYUQyRXYKIF9fWk43V2ViQ29yZTE0U2Ny
b2xsYmFyVGhlbWU1dGhlbWVFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE2Y3JlYXRl
RnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4y
OGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXJFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMzNtYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXJFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0VTNF9pCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzNV
UkxFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzZXRMb2NhbExvYWRQb2xpY3lFTlMw
XzE1TG9jYWxMb2FkUG9saWN5RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApp
bmRleCA4NzFiMjgyLi5mM2E5YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNDk1LDMzICs0OTUsMzMgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW4KIAogc3Rh
dGljIGNvbnN0IGNoYXIgc2VwYXJhdG9yQ2hhcmFjdGVyID0gJ18nOwogCi1QYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK1Bhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7IAogICAgIC8vIE1ha2Ugc3VyZSB0
aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBhcmF0b3Ix
ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgc2Vjb25k
IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IyID0gZGF0YWJhc2VJZGVudGlmaWVyLnJl
dmVyc2VGaW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjIgPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwotICAgICAgICAKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBFbnN1cmUgdGhlcmUgd2VyZSBhdCBsZWFzdCAyIHNl
cGFyYXRvciBjaGFyYWN0ZXJzLiBTb21lIGhvc3RuYW1lcyBvbiBpbnRyYW5ldHMgaGF2ZQogICAg
IC8vIHVuZGVyc2NvcmVzIGluIHRoZW0sIHNvIHdlJ2xsIGFzc3VtZSB0aGF0IGFueSBhZGRpdGlv
bmFsIHVuZGVyc2NvcmVzIGFyZSBwYXJ0IG9mIHRoZSBob3N0LgogICAgIGlmIChzZXBhcmF0b3Ix
ID09IHNlcGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwotICAgICAgICAK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2Vj
dGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBv
cnRPa2F5OwogICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNl
SWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwog
ICAgIGJvb2wgcG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5s
ZW5ndGgoKSAtIDEpOwogICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKLSAgICAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IE1heEFsbG93ZWRQb3J0KQotICAgICAgICByZXR1
cm4gY3JlYXRlKFVSTCgpKTsKLSAgICAgICAgCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAg
ICAgLy8gU3BsaXQgb3V0IHRoZSAzIHNlY3Rpb25zIG9mIGRhdGEKICAgICBTdHJpbmcgcHJvdG9j
b2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIFN0
cmluZyBob3N0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwg
c2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKQEAgLTUzMCw2ICs1MzAsMTQgQEAgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3QKICAgICByZXR1cm4gY3JlYXRlKFVSTChVUkwoKSwgcHJvdG9jb2wg
KyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIvIikpOwogfQog
CitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3sKKyAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGlmIChvcmlnaW4pCisgICAgICAg
IHJldHVybiBvcmlnaW4ucmVsZWFzZSgpOworICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOworfQor
CiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgaW50IHBvcnQpCiB7CiAgICAg
aWYgKHBvcnQgPCAwIHx8IHBvcnQgPiBNYXhBbGxvd2VkUG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAppbmRleCA3NTVmMGEwLi40M2I0NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCkBAIC01NCw2ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgpOwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29u
c3QgU3RyaW5nJik7CisgICAgLy8gQWx0ZXJuYXRlIGZvcm0gb2YgY3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllciB0aGF0IHJldHVybnMgYSBudWxscHRyIG9uIGZhaWx1cmUsIGluc3RlYWQgb2Yg
YW4gZW1wdHkgb3JpZ2luLgorICAgIC8vIEZJWE1FOiBNYW55IHVzZXJzIG9mIGNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIgc2VlbSB0byBleHBlY3QgbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyIGJlaGF2aW9yLAorICAgIC8vIGJ1dCB0aGV5IGFyZW4ndCBnZXR0aW5nIGl0IHNv
IHRoZXkgbWlnaHQgYmUgYnVnZ3kuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBpbnQgcG9ydCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZWFjZjBjLi5iODQ2OWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDctMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBXZWJTZWN1cml0eU9yaWdpbiAid2ViU2VjdXJpdHlPcmln
aW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyIiBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW06CisgICAgICAgICgrW1dlYlNlY3VyaXR5T3JpZ2luIHdlYlNlY3VyaXR5T3JpZ2luRnJvbURh
dGFiYXNlSWRlbnRpZmllcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2lu
IGluaXRXaXRoVVJMOl0pOiBVcGRhdGUgdXNpbmcgUmVmUHRyIEFQSSB0byBhdm9pZCBhIHJlZigp
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgor
CiAyMDE0LTA3LTE0ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAg
ICBbRmVhdHVyZSBRdWVyaWVzXSBFbmFibGUgRmVhdHVyZSBRdWVyaWVzIG9uIE1hYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQppbmRleCBmNmRmY2JmLi42ZWRkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtMzgsNiArMzgsMTYgQEAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW1wbGVtZW50YXRpb24gV2ViU2VjdXJpdHlP
cmlnaW4KKworKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyOihO
U1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgoreworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcihkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgcmV0dXJuIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0
aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW4uZ2V0KCldOworfQorCiAtIChpZClpbml0V2l0
aFVSTDooTlNVUkwgKil1cmwKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAtNDUsOCAr
NTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBvcmlnaW4tPnJlZigpOwotICAgIF9wcml2
YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUgKj4ob3JpZ2lu
LmdldCgpKTsKKyAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gb3JpZ2luLnJlbGVhc2Uo
KS5sZWFrUmVmKCk7CisgICAgX3ByaXZhdGUgPSByZWludGVycHJldF9jYXN0PFdlYlNlY3VyaXR5
T3JpZ2luUHJpdmF0ZSAqPihyYXdPcmlnaW4pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdp
blByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luUHJpdmF0ZS5oCmluZGV4IDY4NTdhYjkuLmUzN2IxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAgICAgaWQ8V2ViUXVvdGFNYW5hZ2VyPiBfYXBwbGlj
YXRpb25DYWNoZVF1b3RhTWFuYWdlcjsKICAgICBpZDxXZWJRdW90YU1hbmFnZXI+IF9kYXRhYmFz
ZVF1b3RhTWFuYWdlcjsKIH0KKysgKGlkKXdlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNlSWRl
bnRpZmllcjooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXI7CiAKIC0gKGlkKWluaXRXaXRo
VVJMOihOU1VSTCAqKXVybDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235003</attachid>
            <date>2014-07-16 10:15:16 -0700</date>
            <delta_ts>2014-07-16 13:43:25 -0700</delta_ts>
            <desc>Patch 2 v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>4020</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyM2Y1YTkzLi5hNzg4YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTQtMDctMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTc0NTQ3MTI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM0OTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgYmlnIHNoaW55IGNvbW1lbnQgaW4gYSBmZXcga2V5IHBsYWNlcy4KKworICAgICAg
ICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpEYXRhYmFzZVByb2Nlc3M6OmluaXRpYWxpemVEYXRhYmFzZVByb2Nlc3MpOgorCisgICAgICAg
ICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpVbmlxdWVJREJEYXRhYmFzZSk6CisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRleHQ6OmFwcGx5UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3VyYXRpb25EZWZhdWx0cyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmVuc3VyZURhdGFiYXNlUHJvY2Vzcyk6CisKIDIwMTQt
MDctMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1Nd
IERvbid0IHByb2dyZXNzaXZlbHkgcmUtcmVuZGVyIHRpbGVzIHdoaWxlIHBpbmNoLXpvb21pbmcg
dW5kZXIgbWVtb3J5IHByZXNzdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAppbmRleCAzYzA3OGM1Li44MzU0NDZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApA
QCAtOTcsNiArOTcsMTAgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OnJlbW92ZVVuaXF1ZUlEQkRh
dGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFz
ZVByb2Nlc3M6OmluaXRpYWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIC8vICoqKioqKioqKgorICAg
IC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3Ig
aW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZp
ZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioq
KioqKgorCiAgICAgbV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkocGFyYW1ldGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGM0YjM2ZDguLjI3OTcwNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC02Miw2ICs2MiwxMCBAQCBVbmlxdWVJREJE
YXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlm
aWVyJiBpZGVudGlmaQogICAgIGlmIChtX2luTWVtb3J5KQogICAgICAgICByZXR1cm47CiAKKyAg
ICAvLyAqKioqKioqKioKKyAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVj
dG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJz
dCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0
NzEyPikKKyAgICAvLyAqKioqKioqKioKKwogICAgIC8vIEVhY2ggdW5pcXVlIEluZGV4ZWQgRGF0
YWJhc2UgZXhpc3RzIGluIGEgZGlyZWN0b3J5IG5hbWVkIGZvciB0aGUgZGF0YWJhc2UsIHdoaWNo
IGV4aXN0cyBpbiBhIGRpcmVjdG9yeSByZXByZXNlbnRpbmcgaXRzIG9wZW5pbmcgb3JpZ2luLgog
ICAgIG1fZGF0YWJhc2VSZWxhdGl2ZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChkYXRhYmFzZUZpbGVuYW1lSWRlbnRpZmllcihpZGVudGlmaWVyLm9wZW5pbmdPcmlnaW4oKSks
IGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAKaW5kZXggN2E0YThmMC4uYzg3YjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTI5LDYgKzEyOSw5IEBAIHZvaWQgV2ViQ29udGV4dDo6
YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRzKFdlYkNvbnRleHRDb25m
aWd1cmF0CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KQog
ICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcGxhdGZvcm1E
ZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKIAorICAgIC8vICoqKioqKioqKgorICAg
IC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3Ig
aW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZp
ZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioq
KioqKgogICAgIGlmICghY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkK
ICAgICAgICAgY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHBsYXRm
b3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiB9CkBAIC00NjYsNiArNDY5
LDkgQEAgdm9pZCBXZWJDb250ZXh0OjplbnN1cmVEYXRhYmFzZVByb2Nlc3MoKQogCiAgICAgQVNT
RVJUKCFtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAKKyAgICAvLyAq
KioqKioqKioKKyAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBz
dHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25z
dWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikK
KyAgICAvLyAqKioqKioqKioKICAgICBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSA9IG1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235004</attachid>
            <date>2014-07-16 10:17:41 -0700</date>
            <delta_ts>2014-07-16 13:43:25 -0700</delta_ts>
            <desc>Patch 1 v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>7658</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjEzYmVlLi4xNjA0NGJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDE0LTA3LTE2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgV2ViU2VjdXJpdHlPcmlnaW4gIndlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNl
SWRlbnRpZmllciIgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzQ5ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcik6IEFkZCBhIGZvcm0gb2YgY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcgorICAgICAgICAgICAgdGhhdCBjYW4gZmFpbCBhbmQgcmV0dXJuIGEgbnVsbHB0ci4KKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKTogVXNlIG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllciBiZWZvcmUgY3JlYXRp
bmcKKyAgICAgICAgICAgIHRoZSBlbXB0eSBvcmlnaW4uCisgICAgICAgICogcGFnZS9TZWN1cml0
eU9yaWdpbi5oOgorCiAyMDE0LTA3LTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTU1OTU3KTogSW52YWxpZCBjYXN0IGluIFdlYkNv
cmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6Z2V0UmFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDQ3YzliNDguLjBkZDBlYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC00MzQsNiArNDM0
LDcgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYUQyRXYKIF9fWk43V2ViQ29yZTE0U2Ny
b2xsYmFyVGhlbWU1dGhlbWVFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE2Y3JlYXRl
RnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4y
OGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXJFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMzNtYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXJFUktO
M1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS04zV1RG
NlN0cmluZ0VTNF9pCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzNV
UkxFCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzZXRMb2NhbExvYWRQb2xpY3lFTlMw
XzE1TG9jYWxMb2FkUG9saWN5RQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApp
bmRleCA4NzFiMjgyLi5mM2E5YmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNDk1LDMzICs0OTUsMzMgQEAgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBvcmlnaW4KIAogc3Rh
dGljIGNvbnN0IGNoYXIgc2VwYXJhdG9yQ2hhcmFjdGVyID0gJ18nOwogCi1QYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK1Bhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjptYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpCiB7IAogICAgIC8vIE1ha2Ugc3VyZSB0
aGVyZSdzIGEgZmlyc3Qgc2VwYXJhdG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjEgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuZmluZChzZXBhcmF0b3JDaGFyYWN0ZXIpOwogICAgIGlmIChzZXBhcmF0b3Ix
ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIAogICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgc2Vjb25k
IHNlcGFyYXRvcgogICAgIHNpemVfdCBzZXBhcmF0b3IyID0gZGF0YWJhc2VJZGVudGlmaWVyLnJl
dmVyc2VGaW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjIgPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwotICAgICAgICAKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBFbnN1cmUgdGhlcmUgd2VyZSBhdCBsZWFzdCAyIHNl
cGFyYXRvciBjaGFyYWN0ZXJzLiBTb21lIGhvc3RuYW1lcyBvbiBpbnRyYW5ldHMgaGF2ZQogICAg
IC8vIHVuZGVyc2NvcmVzIGluIHRoZW0sIHNvIHdlJ2xsIGFzc3VtZSB0aGF0IGFueSBhZGRpdGlv
bmFsIHVuZGVyc2NvcmVzIGFyZSBwYXJ0IG9mIHRoZSBob3N0LgogICAgIGlmIChzZXBhcmF0b3Ix
ID09IHNlcGFyYXRvcjIpCi0gICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOwotICAgICAgICAK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBvcnQgc2Vj
dGlvbiBpcyBhIHZhbGlkIHBvcnQgbnVtYmVyIG9yIGRvZXNuJ3QgZXhpc3QKICAgICBib29sIHBv
cnRPa2F5OwogICAgIGludCBwb3J0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnJpZ2h0KGRhdGFiYXNl
SWRlbnRpZmllci5sZW5ndGgoKSAtIHNlcGFyYXRvcjIgLSAxKS50b0ludCgmcG9ydE9rYXkpOwog
ICAgIGJvb2wgcG9ydEFic2VudCA9IChzZXBhcmF0b3IyID09IGRhdGFiYXNlSWRlbnRpZmllci5s
ZW5ndGgoKSAtIDEpOwogICAgIGlmICghKHBvcnRPa2F5IHx8IHBvcnRBYnNlbnQpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlKFVSTCgpKTsKLSAgICAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
ICAgICBpZiAocG9ydCA8IDAgfHwgcG9ydCA+IE1heEFsbG93ZWRQb3J0KQotICAgICAgICByZXR1
cm4gY3JlYXRlKFVSTCgpKTsKLSAgICAgICAgCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAg
ICAgLy8gU3BsaXQgb3V0IHRoZSAzIHNlY3Rpb25zIG9mIGRhdGEKICAgICBTdHJpbmcgcHJvdG9j
b2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOwogICAgIFN0
cmluZyBob3N0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmluZyhzZXBhcmF0b3IxICsgMSwg
c2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKQEAgLTUzMCw2ICs1MzAsMTQgQEAgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoY29uc3QgU3QKICAgICByZXR1cm4gY3JlYXRlKFVSTChVUkwoKSwgcHJvdG9jb2wg
KyAiOi8vIiArIGhvc3QgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihwb3J0KSArICIvIikpOwogfQog
CitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURh
dGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKK3sKKyAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllcihkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGlmIChvcmlnaW4pCisgICAgICAg
IHJldHVybiBvcmlnaW4ucmVsZWFzZSgpOworICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOworfQor
CiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgaG9zdCwgaW50IHBvcnQpCiB7CiAgICAg
aWYgKHBvcnQgPCAwIHx8IHBvcnQgPiBNYXhBbGxvd2VkUG9ydCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uaAppbmRleCA3NTVmMGEwLi40M2I0NzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCkBAIC01NCw2ICs1NCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZVVuaXF1ZSgpOwogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIoY29u
c3QgU3RyaW5nJik7CisgICAgLy8gQWx0ZXJuYXRlIGZvcm0gb2YgY3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllciB0aGF0IHJldHVybnMgYSBudWxscHRyIG9uIGZhaWx1cmUsIGluc3RlYWQgb2Yg
YW4gZW1wdHkgb3JpZ2luLgorICAgIC8vIEZJWE1FOiBNYW55IHVzZXJzIG9mIGNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIgc2VlbSB0byBleHBlY3QgbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyIGJlaGF2aW9yLAorICAgIC8vIGJ1dCB0aGV5IGFyZW4ndCBnZXR0aW5nIGl0IHNv
IHRoZXkgbWlnaHQgYmUgYnVnZ3kuCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsKKwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9tU3RyaW5nKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVh
dGUoY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBpbnQgcG9ydCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZWFjZjBjLi5iODQ2OWNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTQtMDctMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBXZWJTZWN1cml0eU9yaWdpbiAid2ViU2VjdXJpdHlPcmln
aW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyIiBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW06CisgICAgICAgICgrW1dlYlNlY3VyaXR5T3JpZ2luIHdlYlNlY3VyaXR5T3JpZ2luRnJvbURh
dGFiYXNlSWRlbnRpZmllcjpdKTogQWRkZWQuCisgICAgICAgICgtW1dlYlNlY3VyaXR5T3JpZ2lu
IGluaXRXaXRoVVJMOl0pOiBVcGRhdGUgdXNpbmcgUmVmUHRyIEFQSSB0byBhdm9pZCBhIHJlZigp
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgor
CiAyMDE0LTA3LTE0ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlzQGFkb2JlLmNvbT4KIAogICAgICAg
ICBbRmVhdHVyZSBRdWVyaWVzXSBFbmFibGUgRmVhdHVyZSBRdWVyaWVzIG9uIE1hYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5t
bQppbmRleCBmNmRmY2JmLi42ZWRkMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpbi5tbQpAQCAtMzgsNiArMzgsMTYgQEAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW1wbGVtZW50YXRpb24gV2ViU2VjdXJpdHlP
cmlnaW4KKworKyAoaWQpd2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyOihO
U1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcgoreworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRp
ZmllcihkYXRhYmFzZUlkZW50aWZpZXIpOworICAgIGlmICghb3JpZ2luKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgcmV0dXJuIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0
aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW4uZ2V0KCldOworfQorCiAtIChpZClpbml0V2l0
aFVSTDooTlNVUkwgKil1cmwKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAtNDUsOCAr
NTUsOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoW3VybCBhYnNvbHV0ZVVSTF0pKTsKLSAgICBvcmlnaW4tPnJlZigpOwotICAgIF9wcml2
YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUgKj4ob3JpZ2lu
LmdldCgpKTsKKyAgICBTZWN1cml0eU9yaWdpbiogcmF3T3JpZ2luID0gb3JpZ2luLnJlbGVhc2Uo
KS5sZWFrUmVmKCk7CisgICAgX3ByaXZhdGUgPSByZWludGVycHJldF9jYXN0PFdlYlNlY3VyaXR5
T3JpZ2luUHJpdmF0ZSAqPihyYXdPcmlnaW4pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdp
blByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5
T3JpZ2luUHJpdmF0ZS5oCmluZGV4IDY4NTdhYjkuLmUzN2IxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJp
dmF0ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAgICAgaWQ8V2ViUXVvdGFNYW5hZ2VyPiBfYXBwbGlj
YXRpb25DYWNoZVF1b3RhTWFuYWdlcjsKICAgICBpZDxXZWJRdW90YU1hbmFnZXI+IF9kYXRhYmFz
ZVF1b3RhTWFuYWdlcjsKIH0KKysgKGlkKXdlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNlSWRl
bnRpZmllcjooTlNTdHJpbmcgKilkYXRhYmFzZUlkZW50aWZpZXI7CiAKIC0gKGlkKWluaXRXaXRo
VVJMOihOU1VSTCAqKXVybDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235018</attachid>
            <date>2014-07-16 13:43:25 -0700</date>
            <delta_ts>2014-07-16 16:13:11 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13848</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjEzYmVlLi5hMjZmZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTQtMDctMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBXZWJTZWN1cml0eU9yaWdpbiAid2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyIiBTUEkgYW5kIGNoYW5nZSBfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRo
VVJMOiBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNDk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKTogQWRkIGEgZm9ybSBvZiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyCisg
ICAgICAgICAgICB0aGF0IGNhbiBmYWlsIGFuZCByZXR1cm4gYSBudWxscHRyLgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIpOiBV
c2UgbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyIGJlZm9yZSBjcmVhdGluZworICAg
ICAgICAgICAgdGhlIGVtcHR5IG9yaWdpbi4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2lu
Lmg6CisKIDIwMTQtMDctMTUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxNTU5NTcpOiBJbnZhbGlkIGNhc3QgaW4gV2ViQ29yZTo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDdj
OWI0OC4uMGRkMGViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTQzNCw2ICs0MzQsNyBAQCBf
X1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhRDJFdgogX19aTjdXZWJDb3JlMTRTY3JvbGxiYXJU
aGVtZTV0aGVtZUV2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjcmVhdGVGcm9tU3Ry
aW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI4Y3JlYXRl
RnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2Vj
dXJpdHlPcmlnaW4zM21heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTjNXVEY2U3RyaW5n
RVM0X2kKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTlNfM1VSTEUKIF9f
Wk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2Nh
bExvYWRQb2xpY3lFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDg3
MWIyODIuLmYzYTliZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC00OTUsMzMgKzQ5NSwzMyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpbgogCiBzdGF0aWMgY29u
c3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3Mg
YSBmaXJzdCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRlbnRp
Zmllci5maW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJh
dG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZp
bmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7Ci0gICAgICAgIAorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIC8vIEVuc3VyZSB0aGVyZSB3ZXJlIGF0IGxlYXN0IDIgc2VwYXJhdG9y
IGNoYXJhY3RlcnMuIFNvbWUgaG9zdG5hbWVzIG9uIGludHJhbmV0cyBoYXZlCiAgICAgLy8gdW5k
ZXJzY29yZXMgaW4gdGhlbSwgc28gd2UnbGwgYXNzdW1lIHRoYXQgYW55IGFkZGl0aW9uYWwgdW5k
ZXJzY29yZXMgYXJlIHBhcnQgb2YgdGhlIGhvc3QuCiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2Vw
YXJhdG9yMikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7Ci0gICAgICAgIAorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlz
IGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdAogICAgIGJvb2wgcG9ydE9rYXk7
CiAgICAgaW50IHBvcnQgPSBkYXRhYmFzZUlkZW50aWZpZXIucmlnaHQoZGF0YWJhc2VJZGVudGlm
aWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7CiAgICAgYm9v
bCBwb3J0QWJzZW50ID0gKHNlcGFyYXRvcjIgPT0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgp
IC0gMSk7CiAgICAgaWYgKCEocG9ydE9rYXkgfHwgcG9ydEFic2VudCkpCi0gICAgICAgIHJldHVy
biBjcmVhdGUoVVJMKCkpOwotICAgIAorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGlm
IChwb3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCi0gICAgICAgIHJldHVybiBjcmVh
dGUoVVJMKCkpOwotICAgICAgICAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBT
cGxpdCBvdXQgdGhlIDMgc2VjdGlvbnMgb2YgZGF0YQogICAgIFN0cmluZyBwcm90b2NvbCA9IGRh
dGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgU3RyaW5nIGhv
c3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0
b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwpAQCAtNTMwLDYgKzUzMCwxNCBAQCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdAogICAgIHJldHVybiBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8i
ICsgaG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpICsgIi8iKSk7CiB9CiAKK1Bhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQoreworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgaWYgKG9yaWdpbikKKyAgICAgICAgcmV0dXJu
IG9yaWdpbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7Cit9CisKIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBpbnQgcG9ydCkKIHsKICAgICBpZiAocG9y
dCA8IDAgfHwgcG9ydCA+IE1heEFsbG93ZWRQb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oCmluZGV4IDc1NWYwYTAuLjQzYjQ3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmgKQEAgLTU0LDYgKzU0LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKTsKKyAgICAvLyBBbHRlcm5hdGUgZm9ybSBvZiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyIHRoYXQgcmV0dXJucyBhIG51bGxwdHIgb24gZmFpbHVyZSwgaW5zdGVhZCBvZiBhbiBlbXB0
eSBvcmlnaW4uCisgICAgLy8gRklYTUU6IE1hbnkgdXNlcnMgb2YgY3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllciBzZWVtIHRvIGV4cGVjdCBtYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIgYmVoYXZpb3IsCisgICAgLy8gYnV0IHRoZXkgYXJlbid0IGdldHRpbmcgaXQgc28gdGhleSBt
aWdodCBiZSBidWdneS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gbWF5
YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDFlYWNmMGMuLjM4YWVjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNC0wNy0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdlYlNlY3VyaXR5T3JpZ2luICJ3ZWJTZWN1cml0eU9yaWdpbkZyb21E
YXRhYmFzZUlkZW50aWZpZXIiIFNQSSBhbmQgY2hhbmdlIF93ZWJzaXRlRGF0YVVSTEZvckNvbnRh
aW5lcldpdGhVUkw6IFNQSQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKCtbV2ViU2VjdXJpdHlPcmlnaW4gd2ViU2Vj
dXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyOl0pOiBBZGRlZC4KKyAgICAgICAgKC1b
V2ViU2VjdXJpdHlPcmlnaW4gaW5pdFdpdGhVUkw6XSk6IFVwZGF0ZSB1c2luZyBSZWZQdHIgQVBJ
IHRvIGF2b2lkIGEgcmVmKCkuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmg6CisKIDIwMTQtMDctMTQgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRv
YmUuY29tPgogCiAgICAgICAgIFtGZWF0dXJlIFF1ZXJpZXNdIEVuYWJsZSBGZWF0dXJlIFF1ZXJp
ZXMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGY2ZGZjYmYuLjZlZGQwNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBA
IC0zOCw2ICszOCwxNiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJTZWN1cml0eU9yaWdpbgorCisrIChpZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21EYXRh
YmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCit7CisgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgaWYgKCFvcmln
aW4pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gW1tXZWJTZWN1cml0eU9yaWdp
biBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOm9yaWdpbi5nZXQoKV07Cit9
CisKIC0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKXVybAogewogICAgIHNlbGYgPSBbc3VwZXIg
aW5pdF07CkBAIC00NSw4ICs1NSw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChbdXJsIGFic29sdXRlVVJMXSkpOwotICAgIG9yaWdpbi0+
cmVmKCk7Ci0gICAgX3ByaXZhdGUgPSByZWludGVycHJldF9jYXN0PFdlYlNlY3VyaXR5T3JpZ2lu
UHJpdmF0ZSAqPihvcmlnaW4uZ2V0KCkpOworICAgIFNlY3VyaXR5T3JpZ2luKiByYXdPcmlnaW4g
PSBvcmlnaW4ucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KHJhd09yaWdpbik7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKaW5kZXggNjg1N2FiOS4uZTM3YjFlMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlLmgKQEAgLTM0LDYgKzM0LDcgQEAKICAgICBpZDxXZWJRdW90
YU1hbmFnZXI+IF9hcHBsaWNhdGlvbkNhY2hlUXVvdGFNYW5hZ2VyOwogICAgIGlkPFdlYlF1b3Rh
TWFuYWdlcj4gX2RhdGFiYXNlUXVvdGFNYW5hZ2VyOwogfQorKyAoaWQpd2ViU2VjdXJpdHlPcmln
aW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyOihOU1N0cmluZyAqKWRhdGFiYXNlSWRlbnRpZmllcjsK
IAogLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjNmNWE5
My4uZDFiY2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA3LTE2ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViU2VjdXJpdHlP
cmlnaW4gIndlYlNlY3VyaXR5T3JpZ2luRnJvbURhdGFiYXNlSWRlbnRpZmllciIgU1BJIGFuZCBj
aGFuZ2UgX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDogU1BJCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xNzQ1NDcxMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzQ5ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2UgX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDogU1BJ
IHRvIGluY2x1ZGUgYW4gb3B0aW9uYWwgYnVuZGxlIGlkZW50aWZpZXIgYXJndW1lbnQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoK1tX
S1Byb2Nlc3NQb29sIF93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6YnVuZGxlSWRl
bnRpZmllcklmTm90SW5Db250YWluZXI6XSk6CisgICAgICAgICgrW1dLUHJvY2Vzc1Bvb2wgX3dl
YnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisKKyAgICAgICAgQWRk
IGEgYmlnIHNoaW55IGNvbW1lbnQgaW4gYSBmZXcga2V5IHBsYWNlczoKKyAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VQcm9jZXNzOjppbml0aWFsaXplRGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBEYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VW5pcXVlSURCRGF0YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGx5
UGxhdGZvcm1TcGVjaWZpY0NvbmZpZ3VyYXRpb25EZWZhdWx0cyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRleHQ6OmVuc3VyZURhdGFiYXNlUHJvY2Vzcyk6CisKIDIwMTQtMDctMTQgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERvbid0IHByb2dy
ZXNzaXZlbHkgcmUtcmVuZGVyIHRpbGVzIHdoaWxlIHBpbmNoLXpvb21pbmcgdW5kZXIgbWVtb3J5
IHByZXNzdXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0Rh
dGFiYXNlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJh
c2VQcm9jZXNzLmNwcAppbmRleCAzYzA3OGM1Li44MzU0NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtOTcsNiArOTcs
MTAgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IFVuaXF1ZUlEQkRhdGFiYXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6Omlu
aXRpYWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFO
VDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRh
YmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFw
cGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorCiAgICAg
bV9pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURp
cmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy5pbmRleGVkRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IGM0YjM2ZDguLjI3OTcwNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCkBAIC02Miw2ICs2MiwxMCBAQCBVbmlxdWVJREJEYXRhYmFzZTo6VW5p
cXVlSURCRGF0YWJhc2UoY29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlm
aQogICAgIGlmIChtX2luTWVtb3J5KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyAqKioqKioq
KioKKyAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1
cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5n
IGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKKyAgICAv
LyAqKioqKioqKioKKwogICAgIC8vIEVhY2ggdW5pcXVlIEluZGV4ZWQgRGF0YWJhc2UgZXhpc3Rz
IGluIGEgZGlyZWN0b3J5IG5hbWVkIGZvciB0aGUgZGF0YWJhc2UsIHdoaWNoIGV4aXN0cyBpbiBh
IGRpcmVjdG9yeSByZXByZXNlbnRpbmcgaXRzIG9wZW5pbmcgb3JpZ2luLgogICAgIG1fZGF0YWJh
c2VSZWxhdGl2ZURpcmVjdG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZUZp
bGVuYW1lSWRlbnRpZmllcihpZGVudGlmaWVyLm9wZW5pbmdPcmlnaW4oKSksIGZpbGVuYW1lRm9y
RGF0YWJhc2VOYW1lKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMTE4YjM1Zi4uMDM5ZmNlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpA
QCAtMTA1LDEwICsxMDUsMTQgQEAgZW51bSA6IE5TVUludGVnZXIgewogCiBAaW1wbGVtZW50YXRp
b24gV0tQcm9jZXNzUG9vbCAoV0tQcml2YXRlKQogCi0rIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVS
TEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMCisrIChOU1VSTCAqKV93
ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMIGJ1
bmRsZUlkZW50aWZpZXJJZk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50aWZp
ZXIKIHsKICAgICBOU1VSTCAqdXJsID0gW2NvbnRhaW5lclVSTCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJMaWJyYXJ5IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIHVybCA9IFt1cmwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOworCisg
ICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSAmJiBidW5kbGVJZGVudGlmaWVy
KQorICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJ
ZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisKICAgICByZXR1cm4gW3VybCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oCmluZGV4IDhlZDNlMDIuLjkzOWYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRl
cj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxv
YWREZWxlZ2F0ZTsKIAotKyAoTlNVUkwgKilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRo
VVJMOihOU1VSTCAqKWNvbnRhaW5lclVSTDsKKysgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9y
Q29udGFpbmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkwgYnVuZGxlSWRlbnRpZmllcklm
Tm90SW5Db250YWluZXI6KE5TU3RyaW5nICopYnVuZGxlSWRlbnRpZmllcjsKIAogQGVuZAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggN2E0YThmMC4uYzg3YjY0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTI5LDYgKzEy
OSw5IEBAIHZvaWQgV2ViQ29udGV4dDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlv
bkRlZmF1bHRzKFdlYkNvbnRleHRDb25maWd1cmF0CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KQogICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFi
YXNlRGlyZWN0b3J5ID0gcGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsK
IAorICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUg
ZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0
IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0v
MTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgogICAgIGlmICghY29uZmlndXJhdGlvbi5pbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSkKICAgICAgICAgY29uZmlndXJhdGlvbi5pbmRleGVkREJE
YXRhYmFzZURpcmVjdG9yeSA9IHBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCk7CiB9CkBAIC00NjYsNiArNDY5LDkgQEAgdm9pZCBXZWJDb250ZXh0OjplbnN1cmVEYXRh
YmFzZVByb2Nlc3MoKQogCiAgICAgQVNTRVJUKCFtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5
LmlzRW1wdHkoKSk7CiAKKyAgICAvLyAqKioqKioqKioKKyAgICAvLyBJTVBPUlRBTlQ6IERvIG5v
dCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9u
IGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJk
YXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKKyAgICAvLyAqKioqKioqKioKICAgICBEYXRhYmFzZVBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmluZGV4
ZWREYXRhYmFzZURpcmVjdG9yeSA9IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235033</attachid>
            <date>2014-07-16 16:13:11 -0700</date>
            <delta_ts>2014-07-16 16:23:23 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>13833</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZjEzYmVlLi5hMjZmZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgg
QEAKKzIwMTQtMDctMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBXZWJTZWN1cml0eU9yaWdpbiAid2ViU2VjdXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyIiBTUEkgYW5kIGNoYW5nZSBfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRo
VVJMOiBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEzNDk4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKTogQWRkIGEgZm9ybSBvZiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyCisg
ICAgICAgICAgICB0aGF0IGNhbiBmYWlsIGFuZCByZXR1cm4gYSBudWxscHRyLgorICAgICAgICAo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZpZXIpOiBV
c2UgbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyIGJlZm9yZSBjcmVhdGluZworICAg
ICAgICAgICAgdGhlIGVtcHR5IG9yaWdpbi4KKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2lu
Lmg6CisKIDIwMTQtMDctMTUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIxNTU5NTcpOiBJbnZhbGlkIGNhc3QgaW4gV2ViQ29yZTo6UmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjpnZXRSYW5nZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNDdj
OWI0OC4uMGRkMGViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTQzNCw2ICs0MzQsNyBAQCBf
X1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhRDJFdgogX19aTjdXZWJDb3JlMTRTY3JvbGxiYXJU
aGVtZTV0aGVtZUV2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjcmVhdGVGcm9tU3Ry
aW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI4Y3JlYXRl
RnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2Vj
dXJpdHlPcmlnaW4zM21heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTjNXVEY2U3RyaW5n
RVM0X2kKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTlNfM1VSTEUKIF9f
Wk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2Nh
bExvYWRQb2xpY3lFCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDg3
MWIyODIuLmYzYTliZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC00OTUsMzMgKzQ5NSwzMyBAQCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIG9yaWdpbgogCiBzdGF0aWMgY29u
c3QgY2hhciBzZXBhcmF0b3JDaGFyYWN0ZXIgPSAnXyc7CiAKLVBhc3NSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQorUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46Om1heWJlQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWRlbnRpZmllcikKIHsgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3Mg
YSBmaXJzdCBzZXBhcmF0b3IKICAgICBzaXplX3Qgc2VwYXJhdG9yMSA9IGRhdGFiYXNlSWRlbnRp
Zmllci5maW5kKHNlcGFyYXRvckNoYXJhY3Rlcik7CiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gbm90
Rm91bmQpCi0gICAgICAgIHJldHVybiBjcmVhdGUoVVJMKCkpOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZXJlJ3MgYSBzZWNvbmQgc2VwYXJh
dG9yCiAgICAgc2l6ZV90IHNlcGFyYXRvcjIgPSBkYXRhYmFzZUlkZW50aWZpZXIucmV2ZXJzZUZp
bmQoc2VwYXJhdG9yQ2hhcmFjdGVyKTsKICAgICBpZiAoc2VwYXJhdG9yMiA9PSBub3RGb3VuZCkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7Ci0gICAgICAgIAorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKwogICAgIC8vIEVuc3VyZSB0aGVyZSB3ZXJlIGF0IGxlYXN0IDIgc2VwYXJhdG9y
IGNoYXJhY3RlcnMuIFNvbWUgaG9zdG5hbWVzIG9uIGludHJhbmV0cyBoYXZlCiAgICAgLy8gdW5k
ZXJzY29yZXMgaW4gdGhlbSwgc28gd2UnbGwgYXNzdW1lIHRoYXQgYW55IGFkZGl0aW9uYWwgdW5k
ZXJzY29yZXMgYXJlIHBhcnQgb2YgdGhlIGhvc3QuCiAgICAgaWYgKHNlcGFyYXRvcjEgPT0gc2Vw
YXJhdG9yMikKLSAgICAgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7Ci0gICAgICAgIAorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKwogICAgIC8vIE1ha2Ugc3VyZSB0aGUgcG9ydCBzZWN0aW9uIGlz
IGEgdmFsaWQgcG9ydCBudW1iZXIgb3IgZG9lc24ndCBleGlzdAogICAgIGJvb2wgcG9ydE9rYXk7
CiAgICAgaW50IHBvcnQgPSBkYXRhYmFzZUlkZW50aWZpZXIucmlnaHQoZGF0YWJhc2VJZGVudGlm
aWVyLmxlbmd0aCgpIC0gc2VwYXJhdG9yMiAtIDEpLnRvSW50KCZwb3J0T2theSk7CiAgICAgYm9v
bCBwb3J0QWJzZW50ID0gKHNlcGFyYXRvcjIgPT0gZGF0YWJhc2VJZGVudGlmaWVyLmxlbmd0aCgp
IC0gMSk7CiAgICAgaWYgKCEocG9ydE9rYXkgfHwgcG9ydEFic2VudCkpCi0gICAgICAgIHJldHVy
biBjcmVhdGUoVVJMKCkpOwotICAgIAorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIGlm
IChwb3J0IDwgMCB8fCBwb3J0ID4gTWF4QWxsb3dlZFBvcnQpCi0gICAgICAgIHJldHVybiBjcmVh
dGUoVVJMKCkpOwotICAgICAgICAKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICAvLyBT
cGxpdCBvdXQgdGhlIDMgc2VjdGlvbnMgb2YgZGF0YQogICAgIFN0cmluZyBwcm90b2NvbCA9IGRh
dGFiYXNlSWRlbnRpZmllci5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yMSk7CiAgICAgU3RyaW5nIGhv
c3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0
b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwpAQCAtNTMwLDYgKzUzMCwxNCBAQCBQYXNzUmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmll
cihjb25zdCBTdAogICAgIHJldHVybiBjcmVhdGUoVVJMKFVSTCgpLCBwcm90b2NvbCArICI6Ly8i
ICsgaG9zdCArICI6IiArIFN0cmluZzo6bnVtYmVyKHBvcnQpICsgIi8iKSk7CiB9CiAKK1Bhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tRGF0YWJhc2VJ
ZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKQoreworICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gbWF5YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgaWYgKG9yaWdpbikKKyAgICAgICAgcmV0dXJu
IG9yaWdpbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGNyZWF0ZShVUkwoKSk7Cit9CisKIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgU3RyaW5n
JiBwcm90b2NvbCwgY29uc3QgU3RyaW5nJiBob3N0LCBpbnQgcG9ydCkKIHsKICAgICBpZiAocG9y
dCA8IDAgfHwgcG9ydCA+IE1heEFsbG93ZWRQb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbi5oCmluZGV4IDc1NWYwYTAuLjQzYjQ3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
T3JpZ2luLmgKQEAgLTU0LDYgKzU0LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmKTsKKyAgICAvLyBBbHRlcm5hdGUgZm9ybSBvZiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyIHRoYXQgcmV0dXJucyBhIG51bGxwdHIgb24gZmFpbHVyZSwgaW5zdGVhZCBvZiBhbiBlbXB0
eSBvcmlnaW4uCisgICAgLy8gRklYTUU6IE1hbnkgdXNlcnMgb2YgY3JlYXRlRnJvbURhdGFiYXNl
SWRlbnRpZmllciBzZWVtIHRvIGV4cGVjdCBtYXliZUNyZWF0ZUZyb21EYXRhYmFzZUlkZW50aWZp
ZXIgYmVoYXZpb3IsCisgICAgLy8gYnV0IHRoZXkgYXJlbid0IGdldHRpbmcgaXQgc28gdGhleSBt
aWdodCBiZSBidWdneS4KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gbWF5
YmVDcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOworCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZUZyb21TdHJpbmcoY29uc3QgU3Ry
aW5nJik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIGhvc3QsIGludCBwb3J0KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCmluZGV4IDFlYWNmMGMuLjM4YWVjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxNC0wNy0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIFdlYlNlY3VyaXR5T3JpZ2luICJ3ZWJTZWN1cml0eU9yaWdpbkZyb21E
YXRhYmFzZUlkZW50aWZpZXIiIFNQSSBhbmQgY2hhbmdlIF93ZWJzaXRlRGF0YVVSTEZvckNvbnRh
aW5lcldpdGhVUkw6IFNQSQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+IGFuZCBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0OTg0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbToKKyAgICAgICAgKCtbV2ViU2VjdXJpdHlPcmlnaW4gd2ViU2Vj
dXJpdHlPcmlnaW5Gcm9tRGF0YWJhc2VJZGVudGlmaWVyOl0pOiBBZGRlZC4KKyAgICAgICAgKC1b
V2ViU2VjdXJpdHlPcmlnaW4gaW5pdFdpdGhVUkw6XSk6IFVwZGF0ZSB1c2luZyBSZWZQdHIgQVBJ
IHRvIGF2b2lkIGEgcmVmKCkuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlP
cmlnaW5Qcml2YXRlLmg6CisKIDIwMTQtMDctMTQgIEJlYXIgVHJhdmlzICA8YmV0cmF2aXNAYWRv
YmUuY29tPgogCiAgICAgICAgIFtGZWF0dXJlIFF1ZXJpZXNdIEVuYWJsZSBGZWF0dXJlIFF1ZXJp
ZXMgb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWN1cml0eU9yaWdpbi5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tCmluZGV4IGY2ZGZjYmYuLjJhM2VhYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tCkBA
IC0zOCw2ICszOCwxNiBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJTZWN1cml0eU9yaWdpbgorCisrIChpZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21EYXRh
YmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopZGF0YWJhc2VJZGVudGlmaWVyCit7CisgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6bWF5YmVDcmVhdGVG
cm9tRGF0YWJhc2VJZGVudGlmaWVyKGRhdGFiYXNlSWRlbnRpZmllcik7CisgICAgaWYgKCFvcmln
aW4pCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gW1tbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW4uZ2V0KCldIGF1
dG9yZWxlYXNlXTsKK30KKwogLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopdXJsCiB7CiAgICAg
c2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTQ1LDggKzU1LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFt1cmwgYWJzb2x1dGVVUkxdKSk7
Ci0gICAgb3JpZ2luLT5yZWYoKTsKLSAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
U2VjdXJpdHlPcmlnaW5Qcml2YXRlICo+KG9yaWdpbi5nZXQoKSk7CisgICAgU2VjdXJpdHlPcmln
aW4qIHJhd09yaWdpbiA9IG9yaWdpbi5yZWxlYXNlKCkubGVha1JlZigpOworICAgIF9wcml2YXRl
ID0gcmVpbnRlcnByZXRfY2FzdDxXZWJTZWN1cml0eU9yaWdpblByaXZhdGUgKj4ocmF3T3JpZ2lu
KTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW5Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAppbmRleCA2ODU3
YWI5Li45MGE5NmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaApAQCAtMzUsNiArMzUsOCBAQAog
ICAgIGlkPFdlYlF1b3RhTWFuYWdlcj4gX2RhdGFiYXNlUXVvdGFNYW5hZ2VyOwogfQogCisrIChp
ZCl3ZWJTZWN1cml0eU9yaWdpbkZyb21EYXRhYmFzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopZGF0
YWJhc2VJZGVudGlmaWVyOworCiAtIChpZClpbml0V2l0aFVSTDooTlNVUkwgKil1cmw7CiAKIC0g
KE5TU3RyaW5nICopcHJvdG9jb2w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjNmNWE5My4uZDFiY2NhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA3LTE2ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV2ViU2VjdXJpdHlPcmlnaW4gIndlYlNlY3Vy
aXR5T3JpZ2luRnJvbURhdGFiYXNlSWRlbnRpZmllciIgU1BJIGFuZCBjaGFuZ2UgX3dlYnNpdGVE
YXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDogU1BJCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
NzQ1NDcxMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ5
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2UgX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDogU1BJIHRvIGluY2x1ZGUgYW4g
b3B0aW9uYWwgYnVuZGxlIGlkZW50aWZpZXIgYXJndW1lbnQ6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoK1tXS1Byb2Nlc3NQb29sIF93
ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6YnVuZGxlSWRlbnRpZmllcklmTm90SW5D
b250YWluZXI6XSk6CisgICAgICAgICgrW1dLUHJvY2Vzc1Bvb2wgX3dlYnNpdGVEYXRhVVJMRm9y
Q29udGFpbmVyV2l0aFVSTDpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisKKyAgICAgICAgQWRkIGEgYmlnIHNoaW55IGNv
bW1lbnQgaW4gYSBmZXcga2V5IHBsYWNlczoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0
YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjppbml0
aWFsaXplRGF0YWJhc2VQcm9jZXNzKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0
YWJhc2U6OlVuaXF1ZUlEQkRhdGFiYXNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFwcGx5UGxhdGZvcm1TcGVjaWZp
Y0NvbmZpZ3VyYXRpb25EZWZhdWx0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmVu
c3VyZURhdGFiYXNlUHJvY2Vzcyk6CisKIDIwMTQtMDctMTQgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERvbid0IHByb2dyZXNzaXZlbHkgcmUtcmVu
ZGVyIHRpbGVzIHdoaWxlIHBpbmNoLXpvb21pbmcgdW5kZXIgbWVtb3J5IHByZXNzdXJlLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApp
bmRleCAzYzA3OGM1Li44MzU0NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtOTcsNiArOTcsMTAgQEAgdm9pZCBEYXRh
YmFzZVByb2Nlc3M6OnJlbW92ZVVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFi
YXNlJiBkYXRhYmFzZSkKIAogdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmluaXRpYWxpemVEYXRhYmFz
ZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogeworICAgIC8vICoqKioqKioqKgorICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5n
ZSB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3
aXRob3V0IGZpcnN0IGNvbnN1bHRpbmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3By
b2JsZW0vMTc0NTQ3MTI+KQorICAgIC8vICoqKioqKioqKgorCiAgICAgbV9pbmRleGVkRGF0YWJh
c2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVjdG9yeTsKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5pbmRleGVkRGF0
YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCmluZGV4IGM0YjM2ZDguLjI3OTcwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3Bw
CkBAIC02Miw2ICs2MiwxMCBAQCBVbmlxdWVJREJEYXRhYmFzZTo6VW5pcXVlSURCRGF0YWJhc2Uo
Y29uc3QgVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyJiBpZGVudGlmaQogICAgIGlmIChtX2lu
TWVtb3J5KQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyAqKioqKioqKioKKyAgICAvLyBJTVBP
UlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQg
ZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBmaXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJv
bSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3NDU0NzEyPikKKyAgICAvLyAqKioqKioqKioKKwog
ICAgIC8vIEVhY2ggdW5pcXVlIEluZGV4ZWQgRGF0YWJhc2UgZXhpc3RzIGluIGEgZGlyZWN0b3J5
IG5hbWVkIGZvciB0aGUgZGF0YWJhc2UsIHdoaWNoIGV4aXN0cyBpbiBhIGRpcmVjdG9yeSByZXBy
ZXNlbnRpbmcgaXRzIG9wZW5pbmcgb3JpZ2luLgogICAgIG1fZGF0YWJhc2VSZWxhdGl2ZURpcmVj
dG9yeSA9IHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkYXRhYmFzZUZpbGVuYW1lSWRlbnRpZmll
cihpZGVudGlmaWVyLm9wZW5pbmdPcmlnaW4oKSksIGZpbGVuYW1lRm9yRGF0YWJhc2VOYW1lKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0KaW5kZXggMTE4YjM1Zi4uMDM5ZmNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMTA1LDEwICsxMDUs
MTQgQEAgZW51bSA6IE5TVUludGVnZXIgewogCiBAaW1wbGVtZW50YXRpb24gV0tQcm9jZXNzUG9v
bCAoV0tQcml2YXRlKQogCi0rIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldp
dGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMCisrIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZv
ckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMIGJ1bmRsZUlkZW50aWZpZXJJ
Zk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50aWZpZXIKIHsKICAgICBOU1VS
TCAqdXJsID0gW2NvbnRhaW5lclVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJy
YXJ5IiBpc0RpcmVjdG9yeTpZRVNdOwogICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZRVNdOworCisgICAgaWYgKCFXZWJLaXQ6
OnByb2Nlc3NIYXNDb250YWluZXIoKSAmJiBidW5kbGVJZGVudGlmaWVyKQorICAgICAgICB1cmwg
PSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGly
ZWN0b3J5OllFU107CisKICAgICByZXR1cm4gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJXZWJzaXRlRGF0YSIgaXNEaXJlY3Rvcnk6WUVTXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CmluZGV4IDhlZDNlMDIuLjkzOWYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTQ0LDcgKzQ0
LDcgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWRE
ZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKIAot
KyAoTlNVUkwgKilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRoVVJMOihOU1VSTCAqKWNv
bnRhaW5lclVSTDsKKysgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVS
TDooTlNVUkwgKiljb250YWluZXJVUkwgYnVuZGxlSWRlbnRpZmllcklmTm90SW5Db250YWluZXI6
KE5TU3RyaW5nICopYnVuZGxlSWRlbnRpZmllcjsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggN2E0YThmMC4uYzg3YjY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtMTI5LDYgKzEyOSw5IEBAIHZvaWQgV2Vi
Q29udGV4dDo6YXBwbHlQbGF0Zm9ybVNwZWNpZmljQ29uZmlndXJhdGlvbkRlZmF1bHRzKFdlYkNv
bnRleHRDb25maWd1cmF0CiAgICAgaWYgKCFjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KQogICAgICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0g
cGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKIAorICAgIC8vICoqKioq
KioqKgorICAgIC8vIElNUE9SVEFOVDogRG8gbm90IGNoYW5nZSB0aGUgZGlyZWN0b3J5IHN0cnVj
dHVyZSBmb3IgaW5kZXhlZCBkYXRhYmFzZXMgb24gZGlzayB3aXRob3V0IGZpcnN0IGNvbnN1bHRp
bmcgYSByZXZpZXdlciBmcm9tIEFwcGxlICg8cmRhcjovL3Byb2JsZW0vMTc0NTQ3MTI+KQorICAg
IC8vICoqKioqKioqKgogICAgIGlmICghY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSkKICAgICAgICAgY29uZmlndXJhdGlvbi5pbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSA9IHBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiB9CkBAIC00
NjYsNiArNDY5LDkgQEAgdm9pZCBXZWJDb250ZXh0OjplbnN1cmVEYXRhYmFzZVByb2Nlc3MoKQog
CiAgICAgQVNTRVJUKCFtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSk7CiAK
KyAgICAvLyAqKioqKioqKioKKyAgICAvLyBJTVBPUlRBTlQ6IERvIG5vdCBjaGFuZ2UgdGhlIGRp
cmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGluZGV4ZWQgZGF0YWJhc2VzIG9uIGRpc2sgd2l0aG91dCBm
aXJzdCBjb25zdWx0aW5nIGEgcmV2aWV3ZXIgZnJvbSBBcHBsZSAoPHJkYXI6Ly9wcm9ibGVtLzE3
NDU0NzEyPikKKyAgICAvLyAqKioqKioqKioKICAgICBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLmluZGV4ZWREYXRhYmFzZURpcmVj
dG9yeSA9IG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAK
</data>
<flag name="review"
          id="259569"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235047</attachid>
            <date>2014-07-16 20:28:00 -0700</date>
            <delta_ts>2014-07-16 20:30:01 -0700</delta_ts>
            <desc>Patch v5 - Reintroduce the old removed SPI (leaving everything else about the already landed patch the same)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>2081</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4ZTVhMTc0Li43OTBlYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTQtMDctMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFJlaW50cm9kdWNlIHRoZSBTUEkgX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVS
TDogdGhhdCB3YXMgcmVtb3ZlZCBpbiByMTcxMTYwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQ5ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKCtbV0tQcm9jZXNzUG9vbCBfd2Vic2l0ZURhdGFVUkxGb3JDb250YWlu
ZXJXaXRoVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaDoKKwogMjAxNC0wNy0xNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KIAogICAgICAgICBBIHRlc3QgdGhhdCBoYW5ncyBhdCBjbGVhbnVwIHN0YWdlIGNvbmZ1
c2VzIHdlYmtpdHB5IGh1Z2VseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDAzOWZjZWEuLjVlMjc3ZjliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1t
CkBAIC0xMDUsNiArMTA1LDExIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLUHJvY2Vzc1Bv
b2wgKFdLUHJpdmF0ZSkKIAorKyAoTlNVUkwgKilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJX
aXRoVVJMOihOU1VSTCAqKWNvbnRhaW5lclVSTAoreworICAgIHJldHVybiBbV0tQcm9jZXNzUG9v
bCBfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRoVVJMOmNvbnRhaW5lclVSTCBidW5kbGVJ
ZGVudGlmaWVySWZOb3RJbkNvbnRhaW5lcjpuaWxdOworfQorCiArIChOU1VSTCAqKV93ZWJzaXRl
RGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMIGJ1bmRsZUlk
ZW50aWZpZXJJZk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50aWZpZXIKIHsK
ICAgICBOU1VSTCAqdXJsID0gW2NvbnRhaW5lclVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJMaWJyYXJ5IiBpc0RpcmVjdG9yeTpZRVNdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDkz
OWYzZTYuLjEwMzA0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTop
IGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKIAorKyAoTlNVUkwg
Kilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRoVVJMOihOU1VSTCAqKWNvbnRhaW5lclVS
TDsKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDooTlNVUkwg
Kiljb250YWluZXJVUkwgYnVuZGxlSWRlbnRpZmllcklmTm90SW5Db250YWluZXI6KE5TU3RyaW5n
ICopYnVuZGxlSWRlbnRpZmllcjsKIAogQGVuZAo=
</data>
<flag name="review"
          id="259587"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>