<?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>134371</bug_id>
          
          <creation_ts>2014-06-26 17:25:37 -0700</creation_ts>
          <short_desc>JSContext Inspection: Provide a way to use a non-Main RunLoop for Inspector JavaScript Evaluations</short_desc>
          <delta_ts>2014-06-30 10:58:39 -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>JavaScriptCore</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1018809</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-26 17:25:37 -0700</bug_when>
    <thetext>Some JSContext applications assert that JavaScript executes on a particular dispatch_queue or RunLoop. If a JSContext inspector is opened, and is used to call functions from its quick console, it would evaluate that in the JSContext on the main run loop. This would cause these applications to assert, and generally makes debugging difficult.

Currently, Web Inspector requires a run loop for pausing.

We should allow an application to provide a RunLoop which the debugger can use to evaluate JavaScript on, and not unnecessarily assert by using an unexpected run loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018810</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-26 17:25:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/16392363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018817</commentid>
    <comment_count>2</comment_count>
      <attachid>233949</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-26 17:34:03 -0700</bug_when>
    <thetext>Created attachment 233949
[PATCH] Proposed Fix

I tested this on OS X and iOS with a simple test application to check edge conditions. Everything behaved as I expected. I want to do some more testing on this, and maybe include an updated patch with some basic JSC tests for the property.

Unfortunately there is some duplicated code in this patch between the global shared path and this debuggable specific path. I was not sure how best to share the code that didn&apos;t just look uglier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018818</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-26 17:36:31 -0700</bug_when>
    <thetext>Attachment 233949 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSContextRef.cpp:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:144:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 9 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>1019014</commentid>
    <comment_count>4</comment_count>
      <attachid>233949</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-06-27 10:52:27 -0700</bug_when>
    <thetext>Comment on attachment 233949
[PATCH] Proposed Fix

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

Looks good.

&gt; Source/JavaScriptCore/API/JSContextPrivate.h:51
&gt; +@property (setter=_setDebuggerRunLoop:) CFRunLoopRef _debuggerRunLoop NS_AVAILABLE(10_10, 8_0);

It is annoying this needs to use a C type in ObjC. But at least NSRunLoop has a getter for CFRunLoopRef.

I would say make this use NSRunLoop and have the implementation for _setDebuggerRunLoop: translate to a CFRunLoopRef. But there is no way to turn a CFRunLoopRef into a NSRunLoop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019015</commentid>
    <comment_count>5</comment_count>
      <attachid>233949</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-27 10:54:27 -0700</bug_when>
    <thetext>Comment on attachment 233949
[PATCH] Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/API/JSContextPrivate.h:51
&gt;&gt; +@property (setter=_setDebuggerRunLoop:) CFRunLoopRef _debuggerRunLoop NS_AVAILABLE(10_10, 8_0);
&gt; 
&gt; It is annoying this needs to use a C type in ObjC. But at least NSRunLoop has a getter for CFRunLoopRef.
&gt; 
&gt; I would say make this use NSRunLoop and have the implementation for _setDebuggerRunLoop: translate to a CFRunLoopRef. But there is no way to turn a CFRunLoopRef into a NSRunLoop.

Correct. I think its better to have a property than a one way. If we made this NSRunLoop, we could just assume nobody will change the run loop out from under the ObjC API using the C API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019016</commentid>
    <comment_count>6</comment_count>
      <attachid>233999</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-27 10:57:41 -0700</bug_when>
    <thetext>Created attachment 233999
[PATCH] For Bots 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019031</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-27 11:20:36 -0700</bug_when>
    <thetext>Attachment 233999 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/JSContextRef.cpp:45:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/API/JSContextRefPrivate.h:145:  The parameter name &quot;runLoop&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 9 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>1019046</commentid>
    <comment_count>8</comment_count>
      <attachid>234002</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-27 12:10:36 -0700</bug_when>
    <thetext>Created attachment 234002
[PATCH] For Bots 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019053</commentid>
    <comment_count>9</comment_count>
      <attachid>234006</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-27 12:19:17 -0700</bug_when>
    <thetext>Created attachment 234006
[PATCH] For Bots 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019085</commentid>
    <comment_count>10</comment_count>
      <attachid>234006</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-27 14:13:50 -0700</bug_when>
    <thetext>Comment on attachment 234006
[PATCH] For Bots 3

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

&gt; Source/JavaScriptCore/API/JSContextRefPrivate.h:150
&gt; +#if USE(CF)
&gt; +/*!
&gt; +@function
&gt; +@abstract Gets the run loop used by the Web Inspector debugger when evaluating JavaScript in this context.
&gt; +@param ctx The JSGlobalContext whose setting you want to get.
&gt; +*/
&gt; +JS_EXPORT CFRunLoopRef JSGlobalContextGetDebuggerRunLoop(JSGlobalContextRef ctx) CF_AVAILABLE(10_10, 8_0);
&gt; +
&gt; +/*!
&gt; +@function
&gt; +@abstract Sets the run loop used by the Web Inspector debugger when evaluating JavaScript in this context.
&gt; +@param ctx The JSGlobalContext that you want to change.
&gt; +@param runLoop The new value of the setting for the context.
&gt; +*/
&gt; +JS_EXPORT void JSGlobalContextSetDebuggerRunLoop(JSGlobalContextRef ctx, CFRunLoopRef) CF_AVAILABLE(10_10, 8_0);
&gt; +#endif

Using USE(CF) inside of a Private header is not going to fly. I don&apos;t think there is any clean way to make this clean in the private header.

Lets make this an ObjC only SPI. Move the C API bits to an Internal header. Maybe than I can switch to NSRunLoop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019088</commentid>
    <comment_count>11</comment_count>
      <attachid>234016</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-27 14:24:46 -0700</bug_when>
    <thetext>Created attachment 234016
[PATCH] For Bots 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019347</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-30 10:58:39 -0700</bug_when>
    <thetext>r170589: &lt;http://trac.webkit.org/changeset/170589&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233949</attachid>
            <date>2014-06-26 17:34:03 -0700</date>
            <delta_ts>2014-06-27 10:54:27 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>proposed-fix.patch</filename>
            <type>text/plain</type>
            <size>17407</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggZWY1OWZlZi4uNWZlMWE4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTIyMyw2ICsyMjMs
MTYgQEAgLSAodm9pZClfc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhj
ZXB0aW9uczooQk9PTClpbmNsdWRlTmF0aXZlQ2EKICAgICBKU0dsb2JhbENvbnRleHRTZXRJbmNs
dWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKG1fY29udGV4dCwgaW5j
bHVkZU5hdGl2ZUNhbGxTdGFjayk7CiB9CiAKKy0gKENGUnVuTG9vcFJlZilfZGVidWdnZXJSdW5M
b29wCit7CisgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChtX2Nv
bnRleHQpOworfQorCistICh2b2lkKV9zZXREZWJ1Z2dlclJ1bkxvb3A6KENGUnVuTG9vcFJlZily
dW5Mb29wCit7CisgICAgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKG1fY29udGV4
dCwgcnVuTG9vcCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dChTdWJz
Y3JpcHRTdXBwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZh
dGUuaAppbmRleCA4MDQ2MDE5Li43ZDFkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtNDQsNiArNDQsMTIgQEAKICovCiBAcHJvcGVydHkg
KHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9u
czopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMg
TlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCisvKiEKK0Bwcm9wZXJ0eQorQGRpc2N1c3Npb24g
U2V0IHRoZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdo
ZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCisqLworQHByb3BlcnR5
IChzZXR0ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5M
b29wIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAyM2UxMWY2Li4yOTZkMTk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCIKICNlbmRpZgogCiAjaWYgT1MoREFSV0lOKQpAQCAtMzY3LDMgKzM2OCwz
OCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJl
cG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDbwogI2VuZGlmCiB9CiAKK0NGUnVuTG9vcFJlZiBK
U0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkK
K3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAoIWN0eCkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2Nr
KGV4ZWMpOworCisgICAgcmV0dXJuIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVj
dG9yRGVidWdnYWJsZSgpLmRlYnVnZ2VyUnVuTG9vcCgpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oY3R4KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCit2b2lkIEpTR2xvYmFs
Q29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4LCBDRlJ1bkxv
b3BSZWYgcnVuTG9vcCkKK3sKKyNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKKyAgICBpZiAo
IWN0eCkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xvY2tIb2xk
ZXIgbG9jayhleGVjKTsKKworICAgIGV4ZWMtPnZtRW50cnlHbG9iYWxPYmplY3QoKS0+aW5zcGVj
dG9yRGVidWdnYWJsZSgpLnNldERlYnVnZ2VyUnVuTG9vcChydW5Mb29wKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGN0eCk7CisgICAgVU5VU0VEX1BBUkFNKHJ1bkxvb3ApOworI2VuZGlmCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZh
dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCmlu
ZGV4IDE2NTA5MDUuLmU4ZTM0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDb250ZXh0UmVmUHJpdmF0ZS5oCkBAIC0xMjYsNyArMTI2LDIyIEBAIEpTX0VYUE9SVCBib29s
IEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4
Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0
byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZU5hdGl2ZUNhbGxTdGFjayBUaGUgbmV3IHZhbHVlIG9m
IHRoZSBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2Jh
bENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25z
KEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENG
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRl
eHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xv
YmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlM
QUJMRSgxMF8xMCwgOF8wKTsKKworLyohCitAZnVuY3Rpb24KK0BhYnN0cmFjdCBHZXRzIHRoZSBy
dW4gbG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVjdG9yIGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGlu
ZyBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4KK0BwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29u
dGV4dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRvIGdldC4KKyovCitKU19FWFBPUlQgQ0ZSdW5M
b29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRS
ZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJz
dHJhY3QgU2V0cyB0aGUgcnVuIGxvb3AgdXNlZCBieSB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dl
ciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGlzIGNvbnRleHQuCitAcGFyYW0gY3R4
IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCitAcGFyYW0gcnVu
TG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KKyovCitK
U19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxD
b250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIENGX0FWQUlMQUJMRSgxMF8xMCwg
OF8wKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRl
eCAwZmZmMWIwLi40OWFjYTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
MSBAQAorMjAxNC0wNi0yNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgor
CisgICAgICAgIEpTQ29udGV4dCBJbnNwZWN0aW9uOiBQcm92aWRlIGEgd2F5IHRvIHVzZSBhIG5v
bi1NYWluIFJ1bkxvb3AgZm9yIEluc3BlY3RvciBKYXZhU2NyaXB0IEV2YWx1YXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzNzEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRl
eHRQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlND
b250ZXh0IF9kZWJ1Z2dlclJ1bkxvb3BdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IF9zZXREZWJ1
Z2dlclJ1bkxvb3A6XSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAg
ICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdl
dERlYnVnZ2VyUnVuTG9vcCk6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1
bkxvb3ApOgorICAgICAgICBTUEkgZm9yIHNldHRpbmcgdGhlIENGUnVuTG9vcCBmb3IgYSBkZWJ1
Z2dlciB0byBldmFsdWF0ZSBpbi4KKyAgICAgICAgU2V0IHRoaXMgb24gdGhlIGRlYnVnZ2FibGUu
CisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9y
QmxvY2s6OlJlbW90ZUluc3BlY3RvckJsb2NrKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yQmxvY2s6On5SZW1vdGVJbnNwZWN0b3JCbG9jayk6CisgICAgICAgIChJbnNwZWN0
b3I6OlJlbW90ZUluc3BlY3RvckJsb2NrOjpvcGVyYXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9y
OjpSZW1vdGVJbnNwZWN0b3JCbG9jazo6b3BlcmF0b3IoKSk6CisgICAgICAgIE1vdmVkIGludG8g
dGhlIGhlYWRlci4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omluc3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICBM
ZXRzIHN0b3JlIHRoZSBSdW5Mb29wIG9uIHRoZSBkZWJ1Z2dhYmxlIGluc3RlYWQgb2YgdGhpcyBj
b3JlCisgICAgICAgIHBsYXRmb3JtIGFnbm9zdGljIGNsYXNzLCBzbyBleHBvc2UgdGhlIGRlYnVn
Z2FibGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGVDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JI
YW5kbGVSdW5Tb3VyY2VHbG9iYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKToKKyAgICAgICAgUmVuYW1lIHRoZSBnbG9iYWwg
ZnVuY3Rpb25zIGZvciBjbGFyaXR5LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToKKyAgICAgICAgSGFuZGxlciBmb3IgcHJpdmF0
ZSBydW4gbG9vcHMuCisKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1
Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OnNldHVwUnVuTG9vcCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp0ZWFyZG93blJ1bkxvb3ApOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6cXVldWVUYXNrT25Q
cml2YXRlUnVuTG9vcCk6CisgICAgICAgIFNldHVwIGFuZCB0ZWFyZG93biBhbmQgdXNlIHByaXZh
dGUgcnVuIGxvb3Agc291cmNlcyBpZiB0aGUgZGVidWdnYWJsZSBuZWVkcyBpdC4KKwogMjAxNC0w
Ni0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2lu
XSBFeHBvc2UgQ2FjaGUgSW5mb3JtYXRpb24gdG8gV2luTGF1bmNoZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVn
Z2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGUuaAppbmRleCA5MDI3NGFkLi5kNDgwOTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWZuZGVmIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVfaAogI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
X2gKIAorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CkBAIC00OSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW90
ZURlYnVnZ2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KICAgICB2b2lk
IHNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCk7CiAKKyAgICBDRlJ1bkxvb3BSZWYgZGVi
dWdnZXJSdW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9CisgICAgdm9pZCBzZXRE
ZWJ1Z2dlclJ1bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIHsgbV9ydW5Mb29wID0gcnVuTG9v
cDsgfQorCiAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbygpIGNvbnN0Owog
CiAgICAgZW51bSBEZWJ1Z2dhYmxlVHlwZSB7IEphdmFTY3JpcHQsIFdlYiB9OwpAQCAtNjUsNiAr
NzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKICAg
ICBib29sIG1fYWxsb3dlZDsKKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7
CiB9OwogCiBzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXggOWQzOWE5
YS4uMmJlYzQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9y
ZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbi5oCkBAIC0zOCw2ICszOCw0MiBAQAogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CisgICAgCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JCbG9jayB7
CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yQmxvY2sodm9pZCAoXnRhc2spKCkpCisgICAg
ICAgIDogbV90YXNrKEJsb2NrX2NvcHkodGFzaykpCisgICAgeworICAgIH0KKworICAgIFJlbW90
ZUluc3BlY3RvckJsb2NrKGNvbnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKKyAgICAg
ICAgOiBtX3Rhc2soQmxvY2tfY29weShvdGhlci5tX3Rhc2spKQorICAgIHsKKyAgICB9CisKKyAg
ICB+UmVtb3RlSW5zcGVjdG9yQmxvY2soKQorICAgIHsKKyAgICAgICAgQmxvY2tfcmVsZWFzZSht
X3Rhc2spOworICAgIH0KKworICAgIFJlbW90ZUluc3BlY3RvckJsb2NrJiBvcGVyYXRvcj0oY29u
c3QgUmVtb3RlSW5zcGVjdG9yQmxvY2smIG90aGVyKQorICAgIHsKKyAgICAgICAgdm9pZCAoXm9s
ZFRhc2spKCkgPSBtX3Rhc2s7CisgICAgICAgIG1fdGFzayA9IEJsb2NrX2NvcHkob3RoZXIubV90
YXNrKTsKKyAgICAgICAgQmxvY2tfcmVsZWFzZShvbGRUYXNrKTsKKyAgICAgICAgcmV0dXJuICp0
aGlzOworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0CisgICAgeworICAgICAg
ICBtX3Rhc2soKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCAoXm1fdGFzaykoKTsKK307
CisKK3R5cGVkZWYgVmVjdG9yPFJlbW90ZUluc3BlY3RvckJsb2NrPiBSZW1vdGVJbnNwZWN0b3JR
dWV1ZTsKIAogY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gZmluYWwg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKQEAg
LTU2LDE0ICs5MiwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChO
U1N0cmluZyAqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogCisgICAgc3RkOjptdXRleCYgcXVldWVNdXRleCgpIHsgcmV0
dXJuIG1fcXVldWVNdXRleDsgfQorICAgIFJlbW90ZUluc3BlY3RvclF1ZXVlIHF1ZXVlKCkgY29u
c3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorICAgIHZvaWQgY2xlYXJRdWV1ZSgpIHsgbV9xdWV1ZS5j
bGVhcigpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxl
KHZvaWQgKF5ibG9jaykoKSk7CiAKKyAgICB2b2lkIHNldHVwUnVuTG9vcCgpOworICAgIHZvaWQg
dGVhcmRvd25SdW5Mb29wKCk7CisgICAgdm9pZCBxdWV1ZVRhc2tPblByaXZhdGVSdW5Mb29wKHZv
aWQgKF5ibG9jaykoKSk7CisKICAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3Rl
SW5zcGVjdG9yIHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQogICAgIC8vIGNhbiBiZSB1c2Vk
IG9uIG11bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKICAg
ICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fZGVidWdnYWJsZSBp
cyB2YWxpZC4KICAgICBzdGQ6Om11dGV4IG1fZGVidWdnYWJsZU11dGV4OwogCisgICAgLy8gSWYg
YSBkZWJ1Z2dhYmxlIGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRzIHRvIGV2YWx1YXRl
IG9uCisgICAgLy8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24gdGhhdCBzcGVjaWZp
YyBydW4gbG9vcC4KKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisgICAg
UmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOworICAgIFJlbW90
ZUluc3BlY3RvclF1ZXVlIG1fcXVldWU7CisgICAgc3RkOjptdXRleCBtX3F1ZXVlTXV0ZXg7CisK
ICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CiAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gbV9kZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24ubW0KaW5kZXggNDk5NWRjMS4uOWIyZDAwOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KQEAgLTM4LDQ2
ICszOCwxMSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgUmVtb3RlSW5zcGVj
dG9yQmxvY2sgewotcHVibGljOgotICAgIFJlbW90ZUluc3BlY3RvckJsb2NrKHZvaWQgKF50YXNr
KSgpKQotICAgICAgICA6IG1fdGFzayhCbG9ja19jb3B5KHRhc2spKQotICAgIHsKLSAgICB9Ci0K
LSAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayhjb25zdCBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3Ro
ZXIpCi0gICAgICAgIDogbV90YXNrKEJsb2NrX2NvcHkob3RoZXIubV90YXNrKSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgflJlbW90ZUluc3BlY3RvckJsb2NrKCkKLSAgICB7Ci0gICAgICAgIEJsb2Nr
X3JlbGVhc2UobV90YXNrKTsKLSAgICB9Ci0KLSAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3Bl
cmF0b3I9KGNvbnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKLSAgICB7Ci0gICAgICAg
IHZvaWQgKF5vbGRUYXNrKSgpID0gbV90YXNrOwotICAgICAgICBtX3Rhc2sgPSBCbG9ja19jb3B5
KG90aGVyLm1fdGFzayk7Ci0gICAgICAgIEJsb2NrX3JlbGVhc2Uob2xkVGFzayk7Ci0gICAgICAg
IHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdAotICAg
IHsKLSAgICAgICAgbV90YXNrKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgKF5tX3Rh
c2spKCk7Ci19OwotCi10eXBlZGVmIFZlY3RvcjxSZW1vdGVJbnNwZWN0b3JCbG9jaz4gUmVtb3Rl
SW5zcGVjdG9yUXVldWU7CiBzdGF0aWMgc3RkOjptdXRleCogcndpUXVldWVNdXRleDsKIHN0YXRp
YyBDRlJ1bkxvb3BTb3VyY2VSZWYgcndpUnVuTG9vcFNvdXJjZTsKIHN0YXRpYyBSZW1vdGVJbnNw
ZWN0b3JRdWV1ZSogcndpUXVldWU7CiAKLXN0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRs
ZVJ1blNvdXJjZSh2b2lkKikKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNv
dXJjZUdsb2JhbCh2b2lkKikKIHsKICAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09
IENGUnVuTG9vcEdldE1haW4oKSk7CiAgICAgQVNTRVJUKHJ3aVF1ZXVlTXV0ZXgpOwpAQCAtOTUs
NyArNjAsNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2Uodm9p
ZCopCiAgICAgICAgIGJsb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvclF1
ZXVlVGFzayh2b2lkIChedGFzaykoKSkKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvclF1ZXVl
VGFza09uR2xvYmFsUXVldWUodm9pZCAoXnRhc2spKCkpCiB7CiAgICAgQVNTRVJUKHJ3aVF1ZXVl
TXV0ZXgpOwogICAgIEFTU0VSVChyd2lSdW5Mb29wU291cmNlKTsKQEAgLTExMCwyMSArNzUsMzgg
QEAgc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9yUXVldWVUYXNrKHZvaWQgKF50YXNrKSgpKQog
ICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogfQogCi1zdGF0aWMgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JJbml0aWFsaXplUXVldWUoKQorc3RhdGljIHZvaWQgUmVtb3RlSW5z
cGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKCkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJlZCwgXnsKICAgICAgICAgcndpUXVldWUg
PSBuZXcgUmVtb3RlSW5zcGVjdG9yUXVldWU7CiAgICAgICAgIHJ3aVF1ZXVlTXV0ZXggPSBzdGQ6
Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkucmVsZWFzZSgpOwogCi0gICAgICAgIENGUnVuTG9v
cFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
UmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlfTsKKyAgICAgICAgQ0ZSdW5Mb29wU291cmNl
Q29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVJ
bnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VHbG9iYWx9OwogICAgICAgICByd2lSdW5Mb29wU291cmNl
ID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDEsICZydW5Mb29wU291cmNlQ29udGV4
dCk7CisKICAgICAgICAgLy8gQWRkIHRvIHRoZSBkZWZhdWx0IHJ1biBsb29wIG1vZGUgZm9yIGRl
ZmF1bHQgaGFuZGxpbmcsIGFuZCB0aGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0b3IgcnVuIGxv
b3AgbW9kZSB3aGVuIHBhdXNlZC4KICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9v
cEdldE1haW4oKSwgcndpUnVuTG9vcFNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAg
ICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgcndpUnVuTG9vcFNv
dXJjZSwgRXZlbnRMb29wOjpyZW1vdGVJbnNwZWN0b3JSdW5Mb29wTW9kZSgpKTsKICAgICB9KTsK
IH0KIAorc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlV2l0aEluZm8o
dm9pZCogaW5mbykKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiAq
ZGVidWdnYWJsZUNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbio+KGluZm8pOworCisgICAgUmVtb3RlSW5zcGVjdG9yUXVldWUgcXVldWVD
b3B5OworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2soZGVi
dWdnYWJsZUNvbm5lY3Rpb24tPnF1ZXVlTXV0ZXgoKSk7CisgICAgICAgIHF1ZXVlQ29weSA9IGRl
YnVnZ2FibGVDb25uZWN0aW9uLT5xdWV1ZSgpOworICAgICAgICBkZWJ1Z2dhYmxlQ29ubmVjdGlv
bi0+Y2xlYXJRdWV1ZSgpOworICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgYmxvY2sgOiBx
dWV1ZUNvcHkpCisgICAgICAgIGJsb2NrKCk7Cit9CisKKwogUmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUsIE5TU3RyaW5nICpjb25uZWN0aW9uSWRl
bnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
OjpEZWJ1Z2dhYmxlVHlwZSkKICAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQogICAgICwg
bV9jb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEzMiwxMSAr
MTE0LDEyIEBAIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJCiAgICAgLCBtX2lkZW50aWZpZXIoZGVi
dWdnYWJsZS0+aWRlbnRpZmllcigpKQogICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCiB7Ci0gICAg
UmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6ZVF1ZXVlKCk7CisgICAgc2V0dXBSdW5Mb29wKCk7CiB9
CiAKIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24oKQogeworICAgIHRlYXJkb3duUnVuTG9vcCgpOwogfQogCiBO
U1N0cmluZyAqUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRlc3RpbmF0aW9u
KCkgY29uc3QKQEAgLTE1MSw2ICsxMzQsMTEgQEAgTlNTdHJpbmcgKlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQg
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVn
Z2FibGUodm9pZCAoXmJsb2NrKSgpKQogeworICAgIGlmIChtX3J1bkxvb3ApIHsKKyAgICAgICAg
cXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcChibG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQg
JiYgV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYkNvcmVXZWJUaHJl
YWRSdW4oYmxvY2spOwpAQCAtMTU4LDcgKzE0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2Nr
CiAgICAgfQogI2VuZGlmCiAKLSAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2soYmxvY2spOwor
ICAgIFJlbW90ZUluc3BlY3RvclF1ZXVlVGFza09uR2xvYmFsUXVldWUoYmxvY2spOwogfQogCiBi
b29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCkBAIC0yMzcs
NiArMjI1LDQ4IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwUnVuTG9v
cCgpCit7CisgICAgQ0ZSdW5Mb29wUmVmIGRlYnVnZ2VyUnVuTG9vcCA9IG1fZGVidWdnYWJsZS0+
ZGVidWdnZXJSdW5Mb29wKCk7CisgICAgaWYgKCFkZWJ1Z2dlclJ1bkxvb3ApIHsKKyAgICAgICAg
UmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX3J1bkxvb3AgPSBkZWJ1Z2dlclJ1bkxvb3A7CisKKyAgICBDRlJ1bkxv
b3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIHRoaXMsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFJl
bW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvfTsKKyAgICBtX3J1bkxvb3BTb3Vy
Y2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMSwgJnJ1bkxvb3BTb3VyY2VDb250
ZXh0KTsKKworICAgIENGUnVuTG9vcEFkZFNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9v
cFNvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRlJ1bkxvb3BBZGRT
b3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIEV2ZW50TG9vcDo6
cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OnRlYXJkb3duUnVuTG9vcCgpCit7CisgICAgaWYgKCFtX3J1
bkxvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIENGUnVuTG9vcFJlbW92ZVNvdXJjZShtX3J1
bkxvb3AuZ2V0KCksIG1fcnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKKyAgICBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BT
b3VyY2UuZ2V0KCksIEV2ZW50TG9vcDo6cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUoKSk7CisK
KyAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAgIG1fcnVuTG9vcFNvdXJjZSA9IG51bGxwdHI7
Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnF1ZXVlVGFz
a09uUHJpdmF0ZVJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQoreworICAgIEFTU0VSVChtX3J1bkxv
b3ApOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayht
X3F1ZXVlTXV0ZXgpOworICAgICAgICBtX3F1ZXVlLmFwcGVuZChSZW1vdGVJbnNwZWN0b3JCbG9j
ayhibG9jaykpOworICAgIH0KKworICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChtX3J1bkxvb3BT
b3VyY2UuZ2V0KCkpOworICAgIENGUnVuTG9vcFdha2VVcChtX3J1bkxvb3AuZ2V0KCkpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMDk0ZmFkMC4uN2JkY2I3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00NTYsNiArNDU2LDcgQEAgcHVibGljOgogCiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVy
biAqbV9pbnNwZWN0b3JDb250cm9sbGVyLmdldCgpOyB9CisgICAgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlJiBpbnNwZWN0b3JEZWJ1Z2dhYmxlKCkgeyByZXR1cm4gKm1faW5zcGVjdG9yRGVidWdn
YWJsZS5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldENv
bnNvbGVDbGllbnQoQ29uc29sZUNsaWVudCogY29uc29sZUNsaWVudCkgeyBtX2NvbnNvbGVDbGll
bnQgPSBjb25zb2xlQ2xpZW50OyB9Cg==
</data>
<flag name="review"
          id="258470"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233999</attachid>
            <date>2014-06-27 10:57:41 -0700</date>
            <delta_ts>2014-06-27 12:10:36 -0700</delta_ts>
            <desc>[PATCH] For Bots 1</desc>
            <filename>for-bots.patch</filename>
            <type>text/plain</type>
            <size>17470</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggZWY1OWZlZi4uNWZlMWE4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTIyMyw2ICsyMjMs
MTYgQEAgLSAodm9pZClfc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhj
ZXB0aW9uczooQk9PTClpbmNsdWRlTmF0aXZlQ2EKICAgICBKU0dsb2JhbENvbnRleHRTZXRJbmNs
dWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKG1fY29udGV4dCwgaW5j
bHVkZU5hdGl2ZUNhbGxTdGFjayk7CiB9CiAKKy0gKENGUnVuTG9vcFJlZilfZGVidWdnZXJSdW5M
b29wCit7CisgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChtX2Nv
bnRleHQpOworfQorCistICh2b2lkKV9zZXREZWJ1Z2dlclJ1bkxvb3A6KENGUnVuTG9vcFJlZily
dW5Mb29wCit7CisgICAgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKG1fY29udGV4
dCwgcnVuTG9vcCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dChTdWJz
Y3JpcHRTdXBwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZh
dGUuaAppbmRleCA4MDQ2MDE5Li43ZDFkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtNDQsNiArNDQsMTIgQEAKICovCiBAcHJvcGVydHkg
KHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9u
czopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMg
TlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCisvKiEKK0Bwcm9wZXJ0eQorQGRpc2N1c3Npb24g
U2V0IHRoZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdo
ZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCisqLworQHByb3BlcnR5
IChzZXR0ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5M
b29wIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAyM2UxMWY2Li5lYWZlZjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC00Miw2
ICs0Miw3IEBACiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuaCIKICNlbmRpZgogCiAjaWYgT1MoREFSV0lOKQpAQCAtMzY3LDMgKzM2OCw0
MCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJl
cG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDbwogI2VuZGlmCiB9CiAKKyNpZiBVU0UoQ0YpCitD
RlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29u
dGV4dFJlZiBjdHgpCit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKCFj
dHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9jayhleGVjKTsKKworICAgIHJldHVybiBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPmluc3BlY3RvckRlYnVnZ2FibGUoKS5kZWJ1Z2dlclJ1bkxvb3AoKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKGN0eCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKwor
dm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVm
IGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisKKyAgICBleGVjLT52bUVudHJ5R2xvYmFsT2Jq
ZWN0KCktPmluc3BlY3RvckRlYnVnZ2FibGUoKS5zZXREZWJ1Z2dlclJ1bkxvb3AocnVuTG9vcCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjdHgpOworICAgIFVOVVNFRF9QQVJBTShydW5Mb29w
KTsKKyNlbmRpZgorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
b250ZXh0UmVmUHJpdmF0ZS5oCmluZGV4IDE2NTA5MDUuLjE2MDFkMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCkBAIC0xMjYsNyArMTI2
LDI0IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2Fs
bFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENv
bnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZU5hdGl2ZUNhbGxT
dGFjayBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1K
U19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1do
ZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVk
ZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCitKU19FWFBP
UlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBv
cnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKworI2lmIFVTRShDRikKKy8q
IQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyB0aGUgcnVuIGxvb3AgdXNlZCBieSB0aGUgV2Vi
IEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGlzIGNv
bnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2Ugc2V0dGluZyB5b3Ug
d2FudCB0byBnZXQuCisqLworSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRH
ZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEw
XzEwLCA4XzApOworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFNldHMgdGhlIHJ1biBsb29w
IHVzZWQgYnkgdGhlIFdlYiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFsdWF0aW5nIEphdmFT
Y3JpcHQgaW4gdGhpcyBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRo
YXQgeW91IHdhbnQgdG8gY2hhbmdlLgorQHBhcmFtIHJ1bkxvb3AgVGhlIG5ldyB2YWx1ZSBvZiB0
aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCisqLworSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxD
b250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9v
cFJlZiBydW5Mb29wKSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisjZW5kaWYKIAogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjMDMyZThlLi40YThh
NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNC0wNi0y
NiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQ29u
dGV4dCBJbnNwZWN0aW9uOiBQcm92aWRlIGEgd2F5IHRvIHVzZSBhIG5vbi1NYWluIFJ1bkxvb3Ag
Zm9yIEluc3BlY3RvciBKYXZhU2NyaXB0IEV2YWx1YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQzNzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRQcml2YXRlLmg6Cisg
ICAgICAgICogQVBJL0pTQ29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IF9kZWJ1Z2dl
clJ1bkxvb3BdKToKKyAgICAgICAgKC1bSlNDb250ZXh0IF9zZXREZWJ1Z2dlclJ1bkxvb3A6XSk6
CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkvSlND
b250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9v
cCk6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3ApOgorICAgICAg
ICBTUEkgZm9yIHNldHRpbmcgdGhlIENGUnVuTG9vcCBmb3IgYSBkZWJ1Z2dlciB0byBldmFsdWF0
ZSBpbi4KKyAgICAgICAgU2V0IHRoaXMgb24gdGhlIGRlYnVnZ2FibGUuCisgICAgICAgIAorICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQmxvY2s6OlJlbW90ZUlu
c3BlY3RvckJsb2NrKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQmxvY2s6
On5SZW1vdGVJbnNwZWN0b3JCbG9jayk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckJsb2NrOjpvcGVyYXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0
b3JCbG9jazo6b3BlcmF0b3IoKSk6CisgICAgICAgIE1vdmVkIGludG8gdGhlIGhlYWRlci4KKwor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6Omluc3BlY3RvckRlYnVnZ2FibGUpOgorICAgICAgICBMZXRzIHN0b3JlIHRoZSBS
dW5Mb29wIG9uIHRoZSBkZWJ1Z2dhYmxlIGluc3RlYWQgb2YgdGhpcyBjb3JlCisgICAgICAgIHBs
YXRmb3JtIGFnbm9zdGljIGNsYXNzLCBzbyBleHBvc2UgdGhlIGRlYnVnZ2FibGUuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
Lm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VH
bG9iYWwpOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2tPbkds
b2JhbFF1ZXVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6
ZUdsb2JhbFF1ZXVlKToKKyAgICAgICAgUmVuYW1lIHRoZSBnbG9iYWwgZnVuY3Rpb25zIGZvciBj
bGFyaXR5LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNv
dXJjZVdpdGhJbmZvKToKKyAgICAgICAgSGFuZGxlciBmb3IgcHJpdmF0ZSBydW4gbG9vcHMuCisK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246
OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVw
UnVuTG9vcCk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uOjp0ZWFyZG93blJ1bkxvb3ApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6cXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCk6
CisgICAgICAgIFNldHVwIGFuZCB0ZWFyZG93biBhbmQgdXNlIHByaXZhdGUgcnVuIGxvb3Agc291
cmNlcyBpZiB0aGUgZGVidWdnYWJsZSBuZWVkcyBpdC4KKwogMjAxNC0wNi0yNyAgTMOhc3psw7Mg
TGFuZ8OzICA8bGxhbmdvLnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
W0phdmFTY3JpcHRDb3JlXSBGVEwgYnVpbGRmaXggZm9yIEVGTCBwbGF0Zm9ybS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaAppbmRleCA5MDI3NGFkLi5kNDgwOTY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWZuZGVm
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVfaAogI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlX2gKIAorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgorI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC00OSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICBib29s
IHJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KICAg
ICB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCk7CiAKKyAgICBDRlJ1bkxvb3BS
ZWYgZGVidWdnZXJSdW5Mb29wKCkgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9CisgICAgdm9p
ZCBzZXREZWJ1Z2dlclJ1bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIHsgbV9ydW5Mb29wID0g
cnVuTG9vcDsgfQorCiAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbygpIGNv
bnN0OwogCiAgICAgZW51bSBEZWJ1Z2dhYmxlVHlwZSB7IEphdmFTY3JpcHQsIFdlYiB9OwpAQCAt
NjUsNiArNzAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmll
cjsKICAgICBib29sIG1fYWxsb3dlZDsKKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1
bkxvb3A7CiB9OwogCiBzdHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXgg
OWQzOWE5YS4uMmJlYzQzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbi5oCkBAIC0zOCw2ICszOCw0MiBAQAogT0JKQ19DTEFTUyBOU1N0cmlu
ZzsKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CisgICAgCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JC
bG9jayB7CitwdWJsaWM6CisgICAgUmVtb3RlSW5zcGVjdG9yQmxvY2sodm9pZCAoXnRhc2spKCkp
CisgICAgICAgIDogbV90YXNrKEJsb2NrX2NvcHkodGFzaykpCisgICAgeworICAgIH0KKworICAg
IFJlbW90ZUluc3BlY3RvckJsb2NrKGNvbnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikK
KyAgICAgICAgOiBtX3Rhc2soQmxvY2tfY29weShvdGhlci5tX3Rhc2spKQorICAgIHsKKyAgICB9
CisKKyAgICB+UmVtb3RlSW5zcGVjdG9yQmxvY2soKQorICAgIHsKKyAgICAgICAgQmxvY2tfcmVs
ZWFzZShtX3Rhc2spOworICAgIH0KKworICAgIFJlbW90ZUluc3BlY3RvckJsb2NrJiBvcGVyYXRv
cj0oY29uc3QgUmVtb3RlSW5zcGVjdG9yQmxvY2smIG90aGVyKQorICAgIHsKKyAgICAgICAgdm9p
ZCAoXm9sZFRhc2spKCkgPSBtX3Rhc2s7CisgICAgICAgIG1fdGFzayA9IEJsb2NrX2NvcHkob3Ro
ZXIubV90YXNrKTsKKyAgICAgICAgQmxvY2tfcmVsZWFzZShvbGRUYXNrKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0CisgICAgewor
ICAgICAgICBtX3Rhc2soKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCAoXm1fdGFzayko
KTsKK307CisKK3R5cGVkZWYgVmVjdG9yPFJlbW90ZUluc3BlY3RvckJsb2NrPiBSZW1vdGVJbnNw
ZWN0b3JRdWV1ZTsKIAogY2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24g
ZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdn
YWJsZUNvbm5lY3Rpb24+LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1Ymxp
YzoKQEAgLTU2LDE0ICs5MiwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFj
a2VuZChOU1N0cmluZyAqKTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCisgICAgc3RkOjptdXRleCYgcXVldWVNdXRleCgp
IHsgcmV0dXJuIG1fcXVldWVNdXRleDsgfQorICAgIFJlbW90ZUluc3BlY3RvclF1ZXVlIHF1ZXVl
KCkgY29uc3QgeyByZXR1cm4gbV9xdWV1ZTsgfQorICAgIHZvaWQgY2xlYXJRdWV1ZSgpIHsgbV9x
dWV1ZS5jbGVhcigpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1
Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSk7CiAKKyAgICB2b2lkIHNldHVwUnVuTG9vcCgpOworICAg
IHZvaWQgdGVhcmRvd25SdW5Mb29wKCk7CisgICAgdm9pZCBxdWV1ZVRhc2tPblByaXZhdGVSdW5M
b29wKHZvaWQgKF5ibG9jaykoKSk7CisKICAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUg
UmVtb3RlSW5zcGVjdG9yIHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQogICAgIC8vIGNhbiBi
ZSB1c2VkIG9uIG11bHRpcGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2Fi
bGUKICAgICAvLyBpdHNlbGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fZGVidWdn
YWJsZSBpcyB2YWxpZC4KICAgICBzdGQ6Om11dGV4IG1fZGVidWdnYWJsZU11dGV4OwogCisgICAg
Ly8gSWYgYSBkZWJ1Z2dhYmxlIGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRzIHRvIGV2
YWx1YXRlIG9uCisgICAgLy8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24gdGhhdCBz
cGVjaWZpYyBydW4gbG9vcC4KKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7
CisgICAgUmV0YWluUHRyPENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOworICAg
IFJlbW90ZUluc3BlY3RvclF1ZXVlIG1fcXVldWU7CisgICAgc3RkOjptdXRleCBtX3F1ZXVlTXV0
ZXg7CisKICAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFJldGFpblB0
cjxOU1N0cmluZz4gbV9kZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KaW5kZXggNDk5NWRjMS4uOWIyZDAwOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KQEAg
LTM4LDQ2ICszOCwxMSBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgUmVtb3Rl
SW5zcGVjdG9yQmxvY2sgewotcHVibGljOgotICAgIFJlbW90ZUluc3BlY3RvckJsb2NrKHZvaWQg
KF50YXNrKSgpKQotICAgICAgICA6IG1fdGFzayhCbG9ja19jb3B5KHRhc2spKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayhjb25zdCBSZW1vdGVJbnNwZWN0b3JCbG9j
ayYgb3RoZXIpCi0gICAgICAgIDogbV90YXNrKEJsb2NrX2NvcHkob3RoZXIubV90YXNrKSkKLSAg
ICB7Ci0gICAgfQotCi0gICAgflJlbW90ZUluc3BlY3RvckJsb2NrKCkKLSAgICB7Ci0gICAgICAg
IEJsb2NrX3JlbGVhc2UobV90YXNrKTsKLSAgICB9Ci0KLSAgICBSZW1vdGVJbnNwZWN0b3JCbG9j
ayYgb3BlcmF0b3I9KGNvbnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKLSAgICB7Ci0g
ICAgICAgIHZvaWQgKF5vbGRUYXNrKSgpID0gbV90YXNrOwotICAgICAgICBtX3Rhc2sgPSBCbG9j
a19jb3B5KG90aGVyLm1fdGFzayk7Ci0gICAgICAgIEJsb2NrX3JlbGVhc2Uob2xkVGFzayk7Ci0g
ICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25z
dAotICAgIHsKLSAgICAgICAgbV90YXNrKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQg
KF5tX3Rhc2spKCk7Ci19OwotCi10eXBlZGVmIFZlY3RvcjxSZW1vdGVJbnNwZWN0b3JCbG9jaz4g
UmVtb3RlSW5zcGVjdG9yUXVldWU7CiBzdGF0aWMgc3RkOjptdXRleCogcndpUXVldWVNdXRleDsK
IHN0YXRpYyBDRlJ1bkxvb3BTb3VyY2VSZWYgcndpUnVuTG9vcFNvdXJjZTsKIHN0YXRpYyBSZW1v
dGVJbnNwZWN0b3JRdWV1ZSogcndpUXVldWU7CiAKLXN0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3Rv
ckhhbmRsZVJ1blNvdXJjZSh2b2lkKikKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRs
ZVJ1blNvdXJjZUdsb2JhbCh2b2lkKikKIHsKICAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVu
dCgpID09IENGUnVuTG9vcEdldE1haW4oKSk7CiAgICAgQVNTRVJUKHJ3aVF1ZXVlTXV0ZXgpOwpA
QCAtOTUsNyArNjAsNyBAQCBzdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3Vy
Y2Uodm9pZCopCiAgICAgICAgIGJsb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIFJlbW90ZUluc3Bl
Y3RvclF1ZXVlVGFzayh2b2lkIChedGFzaykoKSkKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3Rv
clF1ZXVlVGFza09uR2xvYmFsUXVldWUodm9pZCAoXnRhc2spKCkpCiB7CiAgICAgQVNTRVJUKHJ3
aVF1ZXVlTXV0ZXgpOwogICAgIEFTU0VSVChyd2lSdW5Mb29wU291cmNlKTsKQEAgLTExMCwyMSAr
NzUsMzggQEAgc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9yUXVldWVUYXNrKHZvaWQgKF50YXNr
KSgpKQogICAgIENGUnVuTG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogfQogCi1zdGF0
aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JJbml0aWFsaXplUXVldWUoKQorc3RhdGljIHZvaWQgUmVt
b3RlSW5zcGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKCkKIHsKICAgICBzdGF0aWMgZGlzcGF0
Y2hfb25jZV90IHByZWQ7CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJlZCwgXnsKICAgICAgICAgcndp
UXVldWUgPSBuZXcgUmVtb3RlSW5zcGVjdG9yUXVldWU7CiAgICAgICAgIHJ3aVF1ZXVlTXV0ZXgg
PSBzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6bXV0ZXg+KCkucmVsZWFzZSgpOwogCi0gICAgICAgIENG
UnVuTG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlfTsKKyAgICAgICAgQ0ZSdW5Mb29w
U291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBS
ZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VHbG9iYWx9OwogICAgICAgICByd2lSdW5Mb29w
U291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDEsICZydW5Mb29wU291cmNl
Q29udGV4dCk7CisKICAgICAgICAgLy8gQWRkIHRvIHRoZSBkZWZhdWx0IHJ1biBsb29wIG1vZGUg
Zm9yIGRlZmF1bHQgaGFuZGxpbmcsIGFuZCB0aGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0b3Ig
cnVuIGxvb3AgbW9kZSB3aGVuIHBhdXNlZC4KICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENG
UnVuTG9vcEdldE1haW4oKSwgcndpUnVuTG9vcFNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2Rl
KTsKICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgcndpUnVu
TG9vcFNvdXJjZSwgRXZlbnRMb29wOjpyZW1vdGVJbnNwZWN0b3JSdW5Mb29wTW9kZSgpKTsKICAg
ICB9KTsKIH0KIAorc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlV2l0
aEluZm8odm9pZCogaW5mbykKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbiAqZGVidWdnYWJsZUNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbio+KGluZm8pOworCisgICAgUmVtb3RlSW5zcGVjdG9yUXVldWUg
cXVldWVDb3B5OworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxv
Y2soZGVidWdnYWJsZUNvbm5lY3Rpb24tPnF1ZXVlTXV0ZXgoKSk7CisgICAgICAgIHF1ZXVlQ29w
eSA9IGRlYnVnZ2FibGVDb25uZWN0aW9uLT5xdWV1ZSgpOworICAgICAgICBkZWJ1Z2dhYmxlQ29u
bmVjdGlvbi0+Y2xlYXJRdWV1ZSgpOworICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgYmxv
Y2sgOiBxdWV1ZUNvcHkpCisgICAgICAgIGJsb2NrKCk7Cit9CisKKwogUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
KFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUsIE5TU3RyaW5nICpjb25uZWN0
aW9uSWRlbnRpZmllciwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlOjpEZWJ1Z2dhYmxlVHlwZSkKICAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQog
ICAgICwgbV9jb25uZWN0aW9uSWRlbnRpZmllcihjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEz
MiwxMSArMTE0LDEyIEBAIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJCiAgICAgLCBtX2lkZW50aWZp
ZXIoZGVidWdnYWJsZS0+aWRlbnRpZmllcigpKQogICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCiB7
Ci0gICAgUmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6ZVF1ZXVlKCk7CisgICAgc2V0dXBSdW5Mb29w
KCk7CiB9CiAKIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oKQogeworICAgIHRlYXJkb3duUnVuTG9vcCgpOwog
fQogCiBOU1N0cmluZyAqUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRlc3Rp
bmF0aW9uKCkgY29uc3QKQEAgLTE1MSw2ICsxMzQsMTEgQEAgTlNTdHJpbmcgKlJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CiAK
IHZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNP
bkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrKSgpKQogeworICAgIGlmIChtX3J1bkxvb3ApIHsKKyAg
ICAgICAgcXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcChibG9jayk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKFdlYkNvcmVXZWJUaHJlYWRJc0Vu
YWJsZWQgJiYgV2ViQ29yZVdlYlRocmVhZElzRW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYkNvcmVX
ZWJUaHJlYWRSdW4oYmxvY2spOwpAQCAtMTU4LDcgKzE0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9pZCAo
XmJsb2NrCiAgICAgfQogI2VuZGlmCiAKLSAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2soYmxv
Y2spOworICAgIFJlbW90ZUluc3BlY3RvclF1ZXVlVGFza09uR2xvYmFsUXVldWUoYmxvY2spOwog
fQogCiBib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCkBA
IC0yMzcsNiArMjI1LDQ4IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b246OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVw
UnVuTG9vcCgpCit7CisgICAgQ0ZSdW5Mb29wUmVmIGRlYnVnZ2VyUnVuTG9vcCA9IG1fZGVidWdn
YWJsZS0+ZGVidWdnZXJSdW5Mb29wKCk7CisgICAgaWYgKCFkZWJ1Z2dlclJ1bkxvb3ApIHsKKyAg
ICAgICAgUmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3J1bkxvb3AgPSBkZWJ1Z2dlclJ1bkxvb3A7CisKKyAgICBD
RlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIHRoaXMsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvfTsKKyAgICBtX3J1bkxv
b3BTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMSwgJnJ1bkxvb3BTb3Vy
Y2VDb250ZXh0KTsKKworICAgIENGUnVuTG9vcEFkZFNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1f
cnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIEV2ZW50
TG9vcDo6cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnRlYXJkb3duUnVuTG9vcCgpCit7CisgICAgaWYg
KCFtX3J1bkxvb3ApCisgICAgICAgIHJldHVybjsKKworICAgIENGUnVuTG9vcFJlbW92ZVNvdXJj
ZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1
bHRNb2RlKTsKKyAgICBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1
bkxvb3BTb3VyY2UuZ2V0KCksIEV2ZW50TG9vcDo6cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUo
KSk7CisKKyAgICBtX3J1bkxvb3AgPSBudWxscHRyOworICAgIG1fcnVuTG9vcFNvdXJjZSA9IG51
bGxwdHI7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnF1
ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQoreworICAgIEFTU0VSVCht
X3J1bkxvb3ApOworCisgICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g
bG9jayhtX3F1ZXVlTXV0ZXgpOworICAgICAgICBtX3F1ZXVlLmFwcGVuZChSZW1vdGVJbnNwZWN0
b3JCbG9jayhibG9jaykpOworICAgIH0KKworICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChtX3J1
bkxvb3BTb3VyY2UuZ2V0KCkpOworICAgIENGUnVuTG9vcFdha2VVcChtX3J1bkxvb3AuZ2V0KCkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShSRU1P
VEVfSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggMDk0ZmFkMC4uN2JkY2I3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00NTYsNiArNDU2LDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7
IHJldHVybiAqbV9pbnNwZWN0b3JDb250cm9sbGVyLmdldCgpOyB9CisgICAgSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dhYmxlJiBpbnNwZWN0b3JEZWJ1Z2dhYmxlKCkgeyByZXR1cm4gKm1faW5zcGVjdG9y
RGVidWdnYWJsZS5nZXQoKTsgfQogI2VuZGlmCiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldENvbnNvbGVDbGllbnQoQ29uc29sZUNsaWVudCogY29uc29sZUNsaWVudCkgeyBtX2NvbnNv
bGVDbGllbnQgPSBjb25zb2xlQ2xpZW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234002</attachid>
            <date>2014-06-27 12:10:36 -0700</date>
            <delta_ts>2014-06-27 12:19:17 -0700</delta_ts>
            <desc>[PATCH] For Bots 2</desc>
            <filename>for-bots-2.patch</filename>
            <type>text/plain</type>
            <size>17512</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggZWY1OWZlZi4uNWZlMWE4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTIyMyw2ICsyMjMs
MTYgQEAgLSAodm9pZClfc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhj
ZXB0aW9uczooQk9PTClpbmNsdWRlTmF0aXZlQ2EKICAgICBKU0dsb2JhbENvbnRleHRTZXRJbmNs
dWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKG1fY29udGV4dCwgaW5j
bHVkZU5hdGl2ZUNhbGxTdGFjayk7CiB9CiAKKy0gKENGUnVuTG9vcFJlZilfZGVidWdnZXJSdW5M
b29wCit7CisgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChtX2Nv
bnRleHQpOworfQorCistICh2b2lkKV9zZXREZWJ1Z2dlclJ1bkxvb3A6KENGUnVuTG9vcFJlZily
dW5Mb29wCit7CisgICAgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKG1fY29udGV4
dCwgcnVuTG9vcCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dChTdWJz
Y3JpcHRTdXBwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZh
dGUuaAppbmRleCA4MDQ2MDE5Li43ZDFkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtNDQsNiArNDQsMTIgQEAKICovCiBAcHJvcGVydHkg
KHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9u
czopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMg
TlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCisvKiEKK0Bwcm9wZXJ0eQorQGRpc2N1c3Npb24g
U2V0IHRoZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdo
ZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCisqLworQHByb3BlcnR5
IChzZXR0ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5M
b29wIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAyM2UxMWY2Li44NDY3YTZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjZW5kaWYK
IApAQCAtMzY3LDMgKzM2OCw0MCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0
aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDbwogI2VuZGlmCiB9
CiAKKyNpZiBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQorQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29u
dGV4dEdldERlYnVnZ2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KQoreworI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghY3R4KSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisK
KyAgICByZXR1cm4gZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JEZWJ1Z2dh
YmxlKCkuZGVidWdnZXJSdW5Mb29wKCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjdHgpOwor
ICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKK3ZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9vcFJlZiBydW5M
b29wKQoreworI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQorICAgIGlmICghY3R4KSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4
ZWMpOworCisgICAgZXhlYy0+dm1FbnRyeUdsb2JhbE9iamVjdCgpLT5pbnNwZWN0b3JEZWJ1Z2dh
YmxlKCkuc2V0RGVidWdnZXJSdW5Mb29wKHJ1bkxvb3ApOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oY3R4KTsKKyAgICBVTlVTRURfUEFSQU0ocnVuTG9vcCk7CisjZW5kaWYKK30KKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWZQcml2YXRl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAppbmRl
eCAxNjUwOTA1Li40NmUxMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZlByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZlByaXZhdGUuaApAQCAtMTI2LDcgKzEyNiwyNCBAQCBKU19FWFBPUlQgYm9vbCBK
U0dsb2JhbENvbnRleHRHZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNl
cHRpb25zKAogQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8g
Y2hhbmdlLgogQHBhcmFtIGluY2x1ZGVOYXRpdmVDYWxsU3RhY2sgVGhlIG5ldyB2YWx1ZSBvZiB0
aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxD
b250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhK
U0dsb2JhbENvbnRleHRSZWYgY3R4LCBib29sIGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7ICAgIAorSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0
U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhKU0dsb2Jh
bENvbnRleHRSZWYgY3R4LCBib29sIGluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrKSBDRl9BVkFJTEFC
TEUoMTBfMTAsIDhfMCk7CisKKyNpZiBVU0UoQ0YpICYmICFPUyhXSU5ET1dTKQorLyohCitAZnVu
Y3Rpb24KK0BhYnN0cmFjdCBHZXRzIHRoZSBydW4gbG9vcCB1c2VkIGJ5IHRoZSBXZWIgSW5zcGVj
dG9yIGRlYnVnZ2VyIHdoZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoaXMgY29udGV4dC4K
K0BwYXJhbSBjdHggVGhlIEpTR2xvYmFsQ29udGV4dCB3aG9zZSBzZXR0aW5nIHlvdSB3YW50IHRv
IGdldC4KKyovCitKU19FWFBPUlQgQ0ZSdW5Mb29wUmVmIEpTR2xvYmFsQ29udGV4dEdldERlYnVn
Z2VyUnVuTG9vcChKU0dsb2JhbENvbnRleHRSZWYgY3R4KSBDRl9BVkFJTEFCTEUoMTBfMTAsIDhf
MCk7CisKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgU2V0cyB0aGUgcnVuIGxvb3AgdXNlZCBi
eSB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBp
biB0aGlzIGNvbnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ug
d2FudCB0byBjaGFuZ2UuCitAcGFyYW0gcnVuTG9vcCBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0
aW5nIGZvciB0aGUgY29udGV4dC4KKyovCitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRT
ZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmKSBD
Rl9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjMDMyZThlLi40YThhNGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAxNC0wNi0yNiAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQ29udGV4dCBJbnNwZWN0aW9u
OiBQcm92aWRlIGEgd2F5IHRvIHVzZSBhIG5vbi1NYWluIFJ1bkxvb3AgZm9yIEluc3BlY3RvciBK
YXZhU2NyaXB0IEV2YWx1YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzQzNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pT
Q29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IF9kZWJ1Z2dlclJ1bkxvb3BdKToKKyAg
ICAgICAgKC1bSlNDb250ZXh0IF9zZXREZWJ1Z2dlclJ1bkxvb3A6XSk6CisgICAgICAgICogQVBJ
L0pTQ29udGV4dFJlZlByaXZhdGUuaDoKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoK
KyAgICAgICAgKEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcCk6CisgICAgICAgIChK
U0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3ApOgorICAgICAgICBTUEkgZm9yIHNldHRp
bmcgdGhlIENGUnVuTG9vcCBmb3IgYSBkZWJ1Z2dlciB0byBldmFsdWF0ZSBpbi4KKyAgICAgICAg
U2V0IHRoaXMgb24gdGhlIGRlYnVnZ2FibGUuCisgICAgICAgIAorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaDoKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQmxvY2s6OlJlbW90ZUluc3BlY3RvckJsb2NrKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yQmxvY2s6On5SZW1vdGVJbnNwZWN0
b3JCbG9jayk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckJsb2NrOjpvcGVy
YXRvcj0pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JCbG9jazo6b3BlcmF0
b3IoKSk6CisgICAgICAgIE1vdmVkIGludG8gdGhlIGhlYWRlci4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omluc3Bl
Y3RvckRlYnVnZ2FibGUpOgorICAgICAgICBMZXRzIHN0b3JlIHRoZSBSdW5Mb29wIG9uIHRoZSBk
ZWJ1Z2dhYmxlIGluc3RlYWQgb2YgdGhpcyBjb3JlCisgICAgICAgIHBsYXRmb3JtIGFnbm9zdGlj
IGNsYXNzLCBzbyBleHBvc2UgdGhlIGRlYnVnZ2FibGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tOgorICAgICAgICAo
SW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VHbG9iYWwpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKToK
KyAgICAgICAgUmVuYW1lIHRoZSBnbG9iYWwgZnVuY3Rpb25zIGZvciBjbGFyaXR5LgorCisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKToK
KyAgICAgICAgSGFuZGxlciBmb3IgcHJpdmF0ZSBydW4gbG9vcHMuCisKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OlJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb246On5SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwUnVuTG9vcCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp0ZWFy
ZG93blJ1bkxvb3ApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbjo6cXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCk6CisgICAgICAgIFNldHVw
IGFuZCB0ZWFyZG93biBhbmQgdXNlIHByaXZhdGUgcnVuIGxvb3Agc291cmNlcyBpZiB0aGUgZGVi
dWdnYWJsZSBuZWVkcyBpdC4KKwogMjAxNC0wNi0yNyAgTMOhc3psw7MgTGFuZ8OzICA8bGxhbmdv
LnUtc3plZ2VkQHBhcnRuZXIuc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0phdmFTY3JpcHRDb3Jl
XSBGVEwgYnVpbGRmaXggZm9yIEVGTCBwbGF0Zm9ybS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGUuaAppbmRleCA5MDI3NGFkLi5kNDgwOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaWZuZGVmIFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVfaAogI2RlZmluZSBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKIAorI2lu
Y2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CkBAIC00OSw2ICs1MSw5IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW90ZURlYnVnZ2lu
Z0FsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93ZWQ7IH0KICAgICB2b2lkIHNldFJlbW90
ZURlYnVnZ2luZ0FsbG93ZWQoYm9vbCk7CiAKKyAgICBDRlJ1bkxvb3BSZWYgZGVidWdnZXJSdW5M
b29wKCkgeyByZXR1cm4gbV9ydW5Mb29wLmdldCgpOyB9CisgICAgdm9pZCBzZXREZWJ1Z2dlclJ1
bkxvb3AoQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApIHsgbV9ydW5Mb29wID0gcnVuTG9vcDsgfQorCiAg
ICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gaW5mbygpIGNvbnN0OwogCiAgICAgZW51
bSBEZWJ1Z2dhYmxlVHlwZSB7IEphdmFTY3JpcHQsIFdlYiB9OwpAQCAtNjUsNiArNzAsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faWRlbnRpZmllcjsKICAgICBib29sIG1f
YWxsb3dlZDsKKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CiB9OwogCiBz
dHJ1Y3QgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKaW5kZXggOWQzOWE5YS4uMmJlYzQz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlv
bi5oCkBAIC0zOCw2ICszOCw0MiBAQAogT0JKQ19DTEFTUyBOU1N0cmluZzsKIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CisgICAgCitjbGFzcyBSZW1vdGVJbnNwZWN0b3JCbG9jayB7CitwdWJsaWM6
CisgICAgUmVtb3RlSW5zcGVjdG9yQmxvY2sodm9pZCAoXnRhc2spKCkpCisgICAgICAgIDogbV90
YXNrKEJsb2NrX2NvcHkodGFzaykpCisgICAgeworICAgIH0KKworICAgIFJlbW90ZUluc3BlY3Rv
ckJsb2NrKGNvbnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKKyAgICAgICAgOiBtX3Rh
c2soQmxvY2tfY29weShvdGhlci5tX3Rhc2spKQorICAgIHsKKyAgICB9CisKKyAgICB+UmVtb3Rl
SW5zcGVjdG9yQmxvY2soKQorICAgIHsKKyAgICAgICAgQmxvY2tfcmVsZWFzZShtX3Rhc2spOwor
ICAgIH0KKworICAgIFJlbW90ZUluc3BlY3RvckJsb2NrJiBvcGVyYXRvcj0oY29uc3QgUmVtb3Rl
SW5zcGVjdG9yQmxvY2smIG90aGVyKQorICAgIHsKKyAgICAgICAgdm9pZCAoXm9sZFRhc2spKCkg
PSBtX3Rhc2s7CisgICAgICAgIG1fdGFzayA9IEJsb2NrX2NvcHkob3RoZXIubV90YXNrKTsKKyAg
ICAgICAgQmxvY2tfcmVsZWFzZShvbGRUYXNrKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIHZvaWQgb3BlcmF0b3IoKSgpIGNvbnN0CisgICAgeworICAgICAgICBtX3Rhc2so
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCAoXm1fdGFzaykoKTsKK307CisKK3R5cGVk
ZWYgVmVjdG9yPFJlbW90ZUluc3BlY3RvckJsb2NrPiBSZW1vdGVJbnNwZWN0b3JRdWV1ZTsKIAog
Y2xhc3MgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24+
LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKQEAgLTU2LDE0ICs5
MiwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChOU1N0cmluZyAq
KTsKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogCisgICAgc3RkOjptdXRleCYgcXVldWVNdXRleCgpIHsgcmV0dXJuIG1fcXVl
dWVNdXRleDsgfQorICAgIFJlbW90ZUluc3BlY3RvclF1ZXVlIHF1ZXVlKCkgY29uc3QgeyByZXR1
cm4gbV9xdWV1ZTsgfQorICAgIHZvaWQgY2xlYXJRdWV1ZSgpIHsgbV9xdWV1ZS5jbGVhcigpOyB9
CisKIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5i
bG9jaykoKSk7CiAKKyAgICB2b2lkIHNldHVwUnVuTG9vcCgpOworICAgIHZvaWQgdGVhcmRvd25S
dW5Mb29wKCk7CisgICAgdm9pZCBxdWV1ZVRhc2tPblByaXZhdGVSdW5Mb29wKHZvaWQgKF5ibG9j
aykoKSk7CisKICAgICAvLyBUaGlzIGNvbm5lY3Rpb24gZnJvbSB0aGUgUmVtb3RlSW5zcGVjdG9y
IHNpbmdsZXRvbiB0byB0aGUgRGVidWdnYWJsZQogICAgIC8vIGNhbiBiZSB1c2VkIG9uIG11bHRp
cGxlIHRocmVhZHMuIFNvIGFueSBhY2Nlc3MgdG8gdGhlIGRlYnVnZ2FibGUKICAgICAvLyBpdHNl
bGYgbXVzdCB0YWtlIHRoaXMgbXV0ZXggdG8gZW5zdXJlIG1fZGVidWdnYWJsZSBpcyB2YWxpZC4K
ICAgICBzdGQ6Om11dGV4IG1fZGVidWdnYWJsZU11dGV4OwogCisgICAgLy8gSWYgYSBkZWJ1Z2dh
YmxlIGhhcyBhIHNwZWNpZmljIHJ1biBsb29wIGl0IHdhbnRzIHRvIGV2YWx1YXRlIG9uCisgICAg
Ly8gd2Ugc2V0dXAgb3VyIHJ1biBsb29wIHNvdXJjZXMgb24gdGhhdCBzcGVjaWZpYyBydW4gbG9v
cC4KKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisgICAgUmV0YWluUHRy
PENGUnVuTG9vcFNvdXJjZVJlZj4gbV9ydW5Mb29wU291cmNlOworICAgIFJlbW90ZUluc3BlY3Rv
clF1ZXVlIG1fcXVldWU7CisgICAgc3RkOjptdXRleCBtX3F1ZXVlTXV0ZXg7CisKICAgICBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBtX2RlYnVnZ2FibGU7CiAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBtX2Nvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9k
ZXN0aW5hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW0KaW5kZXggNDk5NWRjMS4uOWIyZDAwOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUv
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24ubW0KQEAgLTM4LDQ2ICszOCwxMSBA
QAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgUmVtb3RlSW5zcGVjdG9yQmxvY2sg
ewotcHVibGljOgotICAgIFJlbW90ZUluc3BlY3RvckJsb2NrKHZvaWQgKF50YXNrKSgpKQotICAg
ICAgICA6IG1fdGFzayhCbG9ja19jb3B5KHRhc2spKQotICAgIHsKLSAgICB9Ci0KLSAgICBSZW1v
dGVJbnNwZWN0b3JCbG9jayhjb25zdCBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3RoZXIpCi0gICAg
ICAgIDogbV90YXNrKEJsb2NrX2NvcHkob3RoZXIubV90YXNrKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgflJlbW90ZUluc3BlY3RvckJsb2NrKCkKLSAgICB7Ci0gICAgICAgIEJsb2NrX3JlbGVhc2Uo
bV90YXNrKTsKLSAgICB9Ci0KLSAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3BlcmF0b3I9KGNv
bnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKLSAgICB7Ci0gICAgICAgIHZvaWQgKF5v
bGRUYXNrKSgpID0gbV90YXNrOwotICAgICAgICBtX3Rhc2sgPSBCbG9ja19jb3B5KG90aGVyLm1f
dGFzayk7Ci0gICAgICAgIEJsb2NrX3JlbGVhc2Uob2xkVGFzayk7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgbV90YXNrKCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgKF5tX3Rhc2spKCk7Ci19
OwotCi10eXBlZGVmIFZlY3RvcjxSZW1vdGVJbnNwZWN0b3JCbG9jaz4gUmVtb3RlSW5zcGVjdG9y
UXVldWU7CiBzdGF0aWMgc3RkOjptdXRleCogcndpUXVldWVNdXRleDsKIHN0YXRpYyBDRlJ1bkxv
b3BTb3VyY2VSZWYgcndpUnVuTG9vcFNvdXJjZTsKIHN0YXRpYyBSZW1vdGVJbnNwZWN0b3JRdWV1
ZSogcndpUXVldWU7CiAKLXN0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJj
ZSh2b2lkKikKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJjZUdsb2Jh
bCh2b2lkKikKIHsKICAgICBBU1NFUlQoQ0ZSdW5Mb29wR2V0Q3VycmVudCgpID09IENGUnVuTG9v
cEdldE1haW4oKSk7CiAgICAgQVNTRVJUKHJ3aVF1ZXVlTXV0ZXgpOwpAQCAtOTUsNyArNjAsNyBA
QCBzdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2Uodm9pZCopCiAgICAg
ICAgIGJsb2NrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvclF1ZXVlVGFzayh2
b2lkIChedGFzaykoKSkKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvclF1ZXVlVGFza09uR2xv
YmFsUXVldWUodm9pZCAoXnRhc2spKCkpCiB7CiAgICAgQVNTRVJUKHJ3aVF1ZXVlTXV0ZXgpOwog
ICAgIEFTU0VSVChyd2lSdW5Mb29wU291cmNlKTsKQEAgLTExMCwyMSArNzUsMzggQEAgc3RhdGlj
IHZvaWQgUmVtb3RlSW5zcGVjdG9yUXVldWVUYXNrKHZvaWQgKF50YXNrKSgpKQogICAgIENGUnVu
TG9vcFdha2VVcChDRlJ1bkxvb3BHZXRNYWluKCkpOwogfQogCi1zdGF0aWMgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JJbml0aWFsaXplUXVldWUoKQorc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySW5p
dGlhbGl6ZUdsb2JhbFF1ZXVlKCkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IHByZWQ7
CiAgICAgZGlzcGF0Y2hfb25jZSgmcHJlZCwgXnsKICAgICAgICAgcndpUXVldWUgPSBuZXcgUmVt
b3RlSW5zcGVjdG9yUXVldWU7CiAgICAgICAgIHJ3aVF1ZXVlTXV0ZXggPSBzdGQ6Om1ha2VfdW5p
cXVlPHN0ZDo6bXV0ZXg+KCkucmVsZWFzZSgpOwogCi0gICAgICAgIENGUnVuTG9vcFNvdXJjZUNv
bnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgUmVtb3RlSW5z
cGVjdG9ySGFuZGxlUnVuU291cmNlfTsKKyAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBy
dW5Mb29wU291cmNlQ29udGV4dCA9IHswLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVJbnNwZWN0b3JI
YW5kbGVSdW5Tb3VyY2VHbG9iYWx9OwogICAgICAgICByd2lSdW5Mb29wU291cmNlID0gQ0ZSdW5M
b29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDEsICZydW5Mb29wU291cmNlQ29udGV4dCk7CisKICAg
ICAgICAgLy8gQWRkIHRvIHRoZSBkZWZhdWx0IHJ1biBsb29wIG1vZGUgZm9yIGRlZmF1bHQgaGFu
ZGxpbmcsIGFuZCB0aGUgSlNDb250ZXh0IHJlbW90ZSBpbnNwZWN0b3IgcnVuIGxvb3AgbW9kZSB3
aGVuIHBhdXNlZC4KICAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4o
KSwgcndpUnVuTG9vcFNvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKICAgICAgICAgQ0ZS
dW5Mb29wQWRkU291cmNlKENGUnVuTG9vcEdldE1haW4oKSwgcndpUnVuTG9vcFNvdXJjZSwgRXZl
bnRMb29wOjpyZW1vdGVJbnNwZWN0b3JSdW5Mb29wTW9kZSgpKTsKICAgICB9KTsKIH0KIAorc3Rh
dGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlV2l0aEluZm8odm9pZCogaW5m
bykKK3sKKyAgICBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbiAqZGVidWdnYWJs
ZUNvbm5lY3Rpb24gPSBzdGF0aWNfY2FzdDxSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbio+KGluZm8pOworCisgICAgUmVtb3RlSW5zcGVjdG9yUXVldWUgcXVldWVDb3B5OworICAg
IHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2soZGVidWdnYWJsZUNv
bm5lY3Rpb24tPnF1ZXVlTXV0ZXgoKSk7CisgICAgICAgIHF1ZXVlQ29weSA9IGRlYnVnZ2FibGVD
b25uZWN0aW9uLT5xdWV1ZSgpOworICAgICAgICBkZWJ1Z2dhYmxlQ29ubmVjdGlvbi0+Y2xlYXJR
dWV1ZSgpOworICAgIH0KKworICAgIGZvciAoY29uc3QgYXV0byYgYmxvY2sgOiBxdWV1ZUNvcHkp
CisgICAgICAgIGJsb2NrKCk7Cit9CisKKwogUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb246OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKFJlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUqIGRlYnVnZ2FibGUsIE5TU3RyaW5nICpjb25uZWN0aW9uSWRlbnRpZmllciwg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uLCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlOjpEZWJ1Z2dh
YmxlVHlwZSkKICAgICA6IG1fZGVidWdnYWJsZShkZWJ1Z2dhYmxlKQogICAgICwgbV9jb25uZWN0
aW9uSWRlbnRpZmllcihjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEzMiwxMSArMTE0LDEyIEBA
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1
Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJCiAgICAgLCBtX2lkZW50aWZpZXIoZGVidWdnYWJsZS0+
aWRlbnRpZmllcigpKQogICAgICwgbV9jb25uZWN0ZWQoZmFsc2UpCiB7Ci0gICAgUmVtb3RlSW5z
cGVjdG9ySW5pdGlhbGl6ZVF1ZXVlKCk7CisgICAgc2V0dXBSdW5Mb29wKCk7CiB9CiAKIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb24oKQogeworICAgIHRlYXJkb3duUnVuTG9vcCgpOwogfQogCiBOU1N0cmluZyAq
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRlc3RpbmF0aW9uKCkgY29uc3QK
QEAgLTE1MSw2ICsxMzQsMTEgQEAgTlNTdHJpbmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uOjpjb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0CiAKIHZvaWQgUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9p
ZCAoXmJsb2NrKSgpKQogeworICAgIGlmIChtX3J1bkxvb3ApIHsKKyAgICAgICAgcXVldWVUYXNr
T25Qcml2YXRlUnVuTG9vcChibG9jayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICNpZiBQ
TEFURk9STShJT1MpCiAgICAgaWYgKFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQgJiYgV2ViQ29y
ZVdlYlRocmVhZElzRW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYkNvcmVXZWJUaHJlYWRSdW4oYmxv
Y2spOwpAQCAtMTU4LDcgKzE0Niw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb246OmRpc3BhdGNoQXN5bmNPbkRlYnVnZ2FibGUodm9pZCAoXmJsb2NrCiAgICAgfQog
I2VuZGlmCiAKLSAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2soYmxvY2spOworICAgIFJlbW90
ZUluc3BlY3RvclF1ZXVlVGFza09uR2xvYmFsUXVldWUoYmxvY2spOwogfQogCiBib29sIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cCgpCkBAIC0yMzcsNiArMjI1LDQ4
IEBAIGJvb2wgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnNldHVwUnVuTG9vcCgpCit7Cisg
ICAgQ0ZSdW5Mb29wUmVmIGRlYnVnZ2VyUnVuTG9vcCA9IG1fZGVidWdnYWJsZS0+ZGVidWdnZXJS
dW5Mb29wKCk7CisgICAgaWYgKCFkZWJ1Z2dlclJ1bkxvb3ApIHsKKyAgICAgICAgUmVtb3RlSW5z
cGVjdG9ySW5pdGlhbGl6ZUdsb2JhbFF1ZXVlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX3J1bkxvb3AgPSBkZWJ1Z2dlclJ1bkxvb3A7CisKKyAgICBDRlJ1bkxvb3BTb3VyY2VD
b250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIHRoaXMsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFJlbW90ZUluc3Bl
Y3RvckhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvfTsKKyAgICBtX3J1bkxvb3BTb3VyY2UgPSBDRlJ1
bkxvb3BTb3VyY2VDcmVhdGUobnVsbHB0ciwgMSwgJnJ1bkxvb3BTb3VyY2VDb250ZXh0KTsKKwor
ICAgIENGUnVuTG9vcEFkZFNvdXJjZShtX3J1bkxvb3AuZ2V0KCksIG1fcnVuTG9vcFNvdXJjZS5n
ZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobV9y
dW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIEV2ZW50TG9vcDo6cmVtb3RlSW5z
cGVjdG9yUnVuTG9vcE1vZGUoKSk7Cit9CisKK3ZvaWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJs
ZUNvbm5lY3Rpb246OnRlYXJkb3duUnVuTG9vcCgpCit7CisgICAgaWYgKCFtX3J1bkxvb3ApCisg
ICAgICAgIHJldHVybjsKKworICAgIENGUnVuTG9vcFJlbW92ZVNvdXJjZShtX3J1bkxvb3AuZ2V0
KCksIG1fcnVuTG9vcFNvdXJjZS5nZXQoKSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKyAgICBD
RlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0
KCksIEV2ZW50TG9vcDo6cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUoKSk7CisKKyAgICBtX3J1
bkxvb3AgPSBudWxscHRyOworICAgIG1fcnVuTG9vcFNvdXJjZSA9IG51bGxwdHI7Cit9CisKK3Zv
aWQgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnF1ZXVlVGFza09uUHJpdmF0
ZVJ1bkxvb3Aodm9pZCAoXmJsb2NrKSgpKQoreworICAgIEFTU0VSVChtX3J1bkxvb3ApOworCisg
ICAgeworICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbG9jayhtX3F1ZXVlTXV0
ZXgpOworICAgICAgICBtX3F1ZXVlLmFwcGVuZChSZW1vdGVJbnNwZWN0b3JCbG9jayhibG9jaykp
OworICAgIH0KKworICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbChtX3J1bkxvb3BTb3VyY2UuZ2V0
KCkpOworICAgIENGUnVuTG9vcFdha2VVcChtX3J1bkxvb3AuZ2V0KCkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKIAogI2VuZGlmIC8vIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXgg
MDk0ZmFkMC4uN2JkY2I3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC00NTYsNiArNDU2LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCiAgICAgSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXImIGluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCB7IHJldHVybiAqbV9pbnNw
ZWN0b3JDb250cm9sbGVyLmdldCgpOyB9CisgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlJiBp
bnNwZWN0b3JEZWJ1Z2dhYmxlKCkgeyByZXR1cm4gKm1faW5zcGVjdG9yRGVidWdnYWJsZS5nZXQo
KTsgfQogI2VuZGlmCiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldENvbnNvbGVDbGll
bnQoQ29uc29sZUNsaWVudCogY29uc29sZUNsaWVudCkgeyBtX2NvbnNvbGVDbGllbnQgPSBjb25z
b2xlQ2xpZW50OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234006</attachid>
            <date>2014-06-27 12:19:17 -0700</date>
            <delta_ts>2014-06-27 14:24:46 -0700</delta_ts>
            <desc>[PATCH] For Bots 3</desc>
            <filename>for-bots-3.patch</filename>
            <type>text/plain</type>
            <size>17702</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggZWY1OWZlZi4uNWZlMWE4
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTIyMyw2ICsyMjMs
MTYgQEAgLSAodm9pZClfc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhj
ZXB0aW9uczooQk9PTClpbmNsdWRlTmF0aXZlQ2EKICAgICBKU0dsb2JhbENvbnRleHRTZXRJbmNs
dWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKG1fY29udGV4dCwgaW5j
bHVkZU5hdGl2ZUNhbGxTdGFjayk7CiB9CiAKKy0gKENGUnVuTG9vcFJlZilfZGVidWdnZXJSdW5M
b29wCit7CisgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dEdldERlYnVnZ2VyUnVuTG9vcChtX2Nv
bnRleHQpOworfQorCistICh2b2lkKV9zZXREZWJ1Z2dlclJ1bkxvb3A6KENGUnVuTG9vcFJlZily
dW5Mb29wCit7CisgICAgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKG1fY29udGV4
dCwgcnVuTG9vcCk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIEpTQ29udGV4dChTdWJz
Y3JpcHRTdXBwb3J0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZh
dGUuaAppbmRleCA4MDQ2MDE5Li43ZDFkMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ29udGV4dFByaXZhdGUuaApAQCAtNDQsNiArNDQsMTIgQEAKICovCiBAcHJvcGVydHkg
KHNldHRlcj1fc2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tXaGVuUmVwb3J0aW5nRXhjZXB0aW9u
czopIEJPT0wgX2luY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMg
TlNfQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCisvKiEKK0Bwcm9wZXJ0eQorQGRpc2N1c3Npb24g
U2V0IHRoZSBydW4gbG9vcCB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciBzaG91bGQgdXNlIHdo
ZW4gZXZhbHVhdGluZyBKYXZhU2NyaXB0IGluIHRoZSBKU0NvbnRleHQuCisqLworQHByb3BlcnR5
IChzZXR0ZXI9X3NldERlYnVnZ2VyUnVuTG9vcDopIENGUnVuTG9vcFJlZiBfZGVidWdnZXJSdW5M
b29wIE5TX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKwogQGVuZAogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcAppbmRleCAyM2UxMWY2Li5hYzEyNDQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxF
KFJFTU9URV9JTlNQRUNUT1IpCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjZW5kaWYK
IApAQCAtMzY3LDMgKzM2OCw0MCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0
aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDbwogI2VuZGlmCiB9
CiAKKyNpZiBVU0UoQ0YpCitDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJS
dW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRv
SlMoY3R4KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKworICAgIHJldHVybiBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckRlYnVnZ2FibGUoKS5kZWJ1Z2dlclJ1
bkxvb3AoKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGN0eCk7CisgICAgcmV0dXJuIG51bGxw
dHI7CisjZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3Ao
SlNHbG9iYWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCit7CisjaWYgRU5B
QkxFKFJFTU9URV9JTlNQRUNUT1IpCisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisKKyAgICBleGVj
LT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckRlYnVnZ2FibGUoKS5zZXREZWJ1Z2dl
clJ1bkxvb3AocnVuTG9vcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjdHgpOworICAgIFVO
VVNFRF9QQVJBTShydW5Mb29wKTsKKyNlbmRpZgorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0ZS5oCmluZGV4IDE2NTA5MDUuLmMyNzMz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmUHJpdmF0
ZS5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFsdWVS
ZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9XZWJLaXRBdmFpbGFiaWxpdHkuaD4KIAor
I2lmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNlbmRp
ZgorCiAjaWZuZGVmIF9fY3BsdXNwbHVzCiAjaW5jbHVkZSA8c3RkYm9vbC5oPgogI2VuZGlmCkBA
IC0xMjYsNyArMTMwLDI0IEBAIEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1
ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRo
ZSBKU0dsb2JhbENvbnRleHQgdGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVk
ZU5hdGl2ZUNhbGxTdGFjayBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUgY29u
dGV4dC4KICovCi1KU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2
ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgs
IGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsg
ICAgCitKU19FWFBPUlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxT
dGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wg
aW5jbHVkZXNOYXRpdmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKworI2lm
IFVTRShDRikKKy8qIQorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyB0aGUgcnVuIGxvb3AgdXNl
ZCBieSB0aGUgV2ViIEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlw
dCBpbiB0aGlzIGNvbnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2Ug
c2V0dGluZyB5b3Ugd2FudCB0byBnZXQuCisqLworSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0ds
b2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0Zf
QVZBSUxBQkxFKDEwXzEwLCA4XzApOworCisvKiEKK0BmdW5jdGlvbgorQGFic3RyYWN0IFNldHMg
dGhlIHJ1biBsb29wIHVzZWQgYnkgdGhlIFdlYiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFs
dWF0aW5nIEphdmFTY3JpcHQgaW4gdGhpcyBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9i
YWxDb250ZXh0IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgorQHBhcmFtIHJ1bkxvb3AgVGhlIG5l
dyB2YWx1ZSBvZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCisqLworSlNfRVhQT1JUIHZv
aWQgSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBj
dHgsIENGUnVuTG9vcFJlZikgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzApOworI2VuZGlmCiAKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYzAzMmU4ZS4u
NGE4YTRmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTQt
MDYtMjYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0NvbnRleHQgSW5zcGVjdGlvbjogUHJvdmlkZSBhIHdheSB0byB1c2UgYSBub24tTWFpbiBSdW5M
b29wIGZvciBJbnNwZWN0b3IgSmF2YVNjcmlwdCBFdmFsdWF0aW9ucworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MzcxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UHJpdmF0ZS5o
OgorICAgICAgICAqIEFQSS9KU0NvbnRleHQubW06CisgICAgICAgICgtW0pTQ29udGV4dCBfZGVi
dWdnZXJSdW5Mb29wXSk6CisgICAgICAgICgtW0pTQ29udGV4dCBfc2V0RGVidWdnZXJSdW5Mb29w
Ol0pOgorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWZQcml2YXRlLmg6CisgICAgICAgICogQVBJ
L0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1
bkxvb3ApOgorICAgICAgICAoSlNHbG9iYWxDb250ZXh0U2V0RGVidWdnZXJSdW5Mb29wKToKKyAg
ICAgICAgU1BJIGZvciBzZXR0aW5nIHRoZSBDRlJ1bkxvb3AgZm9yIGEgZGVidWdnZXIgdG8gZXZh
bHVhdGUgaW4uCisgICAgICAgIFNldCB0aGlzIG9uIHRoZSBkZWJ1Z2dhYmxlLgorICAgICAgICAK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckJsb2NrOjpSZW1v
dGVJbnNwZWN0b3JCbG9jayk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckJs
b2NrOjp+UmVtb3RlSW5zcGVjdG9yQmxvY2spOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JCbG9jazo6b3BlcmF0b3I9KToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yQmxvY2s6Om9wZXJhdG9yKCkpOgorICAgICAgICBNb3ZlZCBpbnRvIHRoZSBoZWFkZXIu
CisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjppbnNwZWN0b3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgTGV0cyBzdG9yZSB0
aGUgUnVuTG9vcCBvbiB0aGUgZGVidWdnYWJsZSBpbnN0ZWFkIG9mIHRoaXMgY29yZQorICAgICAg
ICBwbGF0Zm9ybSBhZ25vc3RpYyBjbGFzcywgc28gZXhwb3NlIHRoZSBkZWJ1Z2dhYmxlLgorCisg
ICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291
cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yUXVldWVUYXNr
T25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckluaXRp
YWxpemVHbG9iYWxRdWV1ZSk6CisgICAgICAgIFJlbmFtZSB0aGUgZ2xvYmFsIGZ1bmN0aW9ucyBm
b3IgY2xhcml0eS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JIYW5kbGVS
dW5Tb3VyY2VXaXRoSW5mbyk6CisgICAgICAgIEhhbmRsZXIgZm9yIHByaXZhdGUgcnVuIGxvb3Bz
LgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6CisgICAgICAgIChJbnNw
ZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp+UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSk6Cisg
ICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZXR1cFJ1bkxvb3ApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dh
YmxlQ29ubmVjdGlvbjo6dGVhcmRvd25SdW5Mb29wKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxv
b3ApOgorICAgICAgICBTZXR1cCBhbmQgdGVhcmRvd24gYW5kIHVzZSBwcml2YXRlIHJ1biBsb29w
IHNvdXJjZXMgaWYgdGhlIGRlYnVnZ2FibGUgbmVlZHMgaXQuCisKIDIwMTQtMDYtMjcgIEzDoXN6
bMOzIExhbmfDsyAgPGxsYW5nby51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtKYXZhU2NyaXB0Q29yZV0gRlRMIGJ1aWxkZml4IGZvciBFRkwgcGxhdGZvcm0uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNw
ZWN0b3JEZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgKaW5kZXggOTAyNzRhZC4uZDQ4MDk2OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5z
cGVjdG9yRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGUuaApAQCAtMjgsNiArMjgsOCBAQAogI2lm
bmRlZiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlX2gKICNkZWZpbmUgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZV9oCiAKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNDksNiArNTEsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCByZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkOyB9
CiAgICAgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wpOwogCisgICAgQ0ZSdW5M
b29wUmVmIGRlYnVnZ2VyUnVuTG9vcCgpIHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQorICAg
IHZvaWQgc2V0RGVidWdnZXJSdW5Mb29wKENGUnVuTG9vcFJlZiBydW5Mb29wKSB7IG1fcnVuTG9v
cCA9IHJ1bkxvb3A7IH0KKwogICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm8o
KSBjb25zdDsKIAogICAgIGVudW0gRGVidWdnYWJsZVR5cGUgeyBKYXZhU2NyaXB0LCBXZWIgfTsK
QEAgLTY1LDYgKzcwLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lkZW50
aWZpZXI7CiAgICAgYm9vbCBtX2FsbG93ZWQ7CisgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4g
bV9ydW5Mb29wOwogfTsKIAogc3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCmlu
ZGV4IDlkMzlhOWEuLjJiZWM0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZUNvbm5lY3Rpb24uaApAQCAtMzgsNiArMzgsNDIgQEAKIE9CSkNfQ0xBU1MgTlNT
dHJpbmc7CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworICAgIAorY2xhc3MgUmVtb3RlSW5zcGVj
dG9yQmxvY2sgeworcHVibGljOgorICAgIFJlbW90ZUluc3BlY3RvckJsb2NrKHZvaWQgKF50YXNr
KSgpKQorICAgICAgICA6IG1fdGFzayhCbG9ja19jb3B5KHRhc2spKQorICAgIHsKKyAgICB9CisK
KyAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayhjb25zdCBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3Ro
ZXIpCisgICAgICAgIDogbV90YXNrKEJsb2NrX2NvcHkob3RoZXIubV90YXNrKSkKKyAgICB7Cisg
ICAgfQorCisgICAgflJlbW90ZUluc3BlY3RvckJsb2NrKCkKKyAgICB7CisgICAgICAgIEJsb2Nr
X3JlbGVhc2UobV90YXNrKTsKKyAgICB9CisKKyAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3Bl
cmF0b3I9KGNvbnN0IFJlbW90ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKKyAgICB7CisgICAgICAg
IHZvaWQgKF5vbGRUYXNrKSgpID0gbV90YXNrOworICAgICAgICBtX3Rhc2sgPSBCbG9ja19jb3B5
KG90aGVyLm1fdGFzayk7CisgICAgICAgIEJsb2NrX3JlbGVhc2Uob2xkVGFzayk7CisgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdAorICAg
IHsKKyAgICAgICAgbV90YXNrKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgKF5tX3Rh
c2spKCk7Cit9OworCit0eXBlZGVmIFZlY3RvcjxSZW1vdGVJbnNwZWN0b3JCbG9jaz4gUmVtb3Rl
SW5zcGVjdG9yUXVldWU7CiAKIGNsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0
aW9uIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uPiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBw
dWJsaWM6CkBAIC01NiwxNCArOTIsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VU
b0JhY2tlbmQoTlNTdHJpbmcgKik7CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAorICAgIHN0ZDo6bXV0ZXgmIHF1ZXVlTXV0
ZXgoKSB7IHJldHVybiBtX3F1ZXVlTXV0ZXg7IH0KKyAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZSBx
dWV1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVldWU7IH0KKyAgICB2b2lkIGNsZWFyUXVldWUoKSB7
IG1fcXVldWUuY2xlYXIoKTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hBc3luY09u
RGVidWdnYWJsZSh2b2lkICheYmxvY2spKCkpOwogCisgICAgdm9pZCBzZXR1cFJ1bkxvb3AoKTsK
KyAgICB2b2lkIHRlYXJkb3duUnVuTG9vcCgpOworICAgIHZvaWQgcXVldWVUYXNrT25Qcml2YXRl
UnVuTG9vcCh2b2lkICheYmxvY2spKCkpOworCiAgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20g
dGhlIFJlbW90ZUluc3BlY3RvciBzaW5nbGV0b24gdG8gdGhlIERlYnVnZ2FibGUKICAgICAvLyBj
YW4gYmUgdXNlZCBvbiBtdWx0aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSBkZWJ1
Z2dhYmxlCiAgICAgLy8gaXRzZWxmIG11c3QgdGFrZSB0aGlzIG11dGV4IHRvIGVuc3VyZSBtX2Rl
YnVnZ2FibGUgaXMgdmFsaWQuCiAgICAgc3RkOjptdXRleCBtX2RlYnVnZ2FibGVNdXRleDsKIAor
ICAgIC8vIElmIGEgZGVidWdnYWJsZSBoYXMgYSBzcGVjaWZpYyBydW4gbG9vcCBpdCB3YW50cyB0
byBldmFsdWF0ZSBvbgorICAgIC8vIHdlIHNldHVwIG91ciBydW4gbG9vcCBzb3VyY2VzIG9uIHRo
YXQgc3BlY2lmaWMgcnVuIGxvb3AuCisgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5M
b29wOworICAgIFJldGFpblB0cjxDRlJ1bkxvb3BTb3VyY2VSZWY+IG1fcnVuTG9vcFNvdXJjZTsK
KyAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZSBtX3F1ZXVlOworICAgIHN0ZDo6bXV0ZXggbV9xdWV1
ZU11dGV4OworCiAgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZSogbV9kZWJ1Z2dhYmxlOwog
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IG1fZGVzdGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbi5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCmluZGV4IDQ5OTVkYzEuLjliMmQwMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1t
CkBAIC0zOCw0NiArMzgsMTEgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIFJl
bW90ZUluc3BlY3RvckJsb2NrIHsKLXB1YmxpYzoKLSAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayh2
b2lkIChedGFzaykoKSkKLSAgICAgICAgOiBtX3Rhc2soQmxvY2tfY29weSh0YXNrKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgUmVtb3RlSW5zcGVjdG9yQmxvY2soY29uc3QgUmVtb3RlSW5zcGVjdG9y
QmxvY2smIG90aGVyKQotICAgICAgICA6IG1fdGFzayhCbG9ja19jb3B5KG90aGVyLm1fdGFzaykp
Ci0gICAgewotICAgIH0KLQotICAgIH5SZW1vdGVJbnNwZWN0b3JCbG9jaygpCi0gICAgewotICAg
ICAgICBCbG9ja19yZWxlYXNlKG1fdGFzayk7Ci0gICAgfQotCi0gICAgUmVtb3RlSW5zcGVjdG9y
QmxvY2smIG9wZXJhdG9yPShjb25zdCBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3RoZXIpCi0gICAg
ewotICAgICAgICB2b2lkICheb2xkVGFzaykoKSA9IG1fdGFzazsKLSAgICAgICAgbV90YXNrID0g
QmxvY2tfY29weShvdGhlci5tX3Rhc2spOwotICAgICAgICBCbG9ja19yZWxlYXNlKG9sZFRhc2sp
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIG1fdGFzaygpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2
b2lkIChebV90YXNrKSgpOwotfTsKLQotdHlwZWRlZiBWZWN0b3I8UmVtb3RlSW5zcGVjdG9yQmxv
Y2s+IFJlbW90ZUluc3BlY3RvclF1ZXVlOwogc3RhdGljIHN0ZDo6bXV0ZXgqIHJ3aVF1ZXVlTXV0
ZXg7CiBzdGF0aWMgQ0ZSdW5Mb29wU291cmNlUmVmIHJ3aVJ1bkxvb3BTb3VyY2U7CiBzdGF0aWMg
UmVtb3RlSW5zcGVjdG9yUXVldWUqIHJ3aVF1ZXVlOwogCi1zdGF0aWMgdm9pZCBSZW1vdGVJbnNw
ZWN0b3JIYW5kbGVSdW5Tb3VyY2Uodm9pZCopCitzdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JI
YW5kbGVSdW5Tb3VyY2VHbG9iYWwodm9pZCopCiB7CiAgICAgQVNTRVJUKENGUnVuTG9vcEdldEN1
cnJlbnQoKSA9PSBDRlJ1bkxvb3BHZXRNYWluKCkpOwogICAgIEFTU0VSVChyd2lRdWV1ZU11dGV4
KTsKQEAgLTk1LDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVu
U291cmNlKHZvaWQqKQogICAgICAgICBibG9jaygpOwogfQogCi1zdGF0aWMgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JRdWV1ZVRhc2sodm9pZCAoXnRhc2spKCkpCitzdGF0aWMgdm9pZCBSZW1vdGVJbnNw
ZWN0b3JRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKHZvaWQgKF50YXNrKSgpKQogewogICAgIEFTU0VS
VChyd2lRdWV1ZU11dGV4KTsKICAgICBBU1NFUlQocndpUnVuTG9vcFNvdXJjZSk7CkBAIC0xMTAs
MjEgKzc1LDM4IEBAIHN0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvclF1ZXVlVGFzayh2b2lkIChe
dGFzaykoKSkKICAgICBDRlJ1bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKIH0KIAot
c3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySW5pdGlhbGl6ZVF1ZXVlKCkKK3N0YXRpYyB2b2lk
IFJlbW90ZUluc3BlY3RvckluaXRpYWxpemVHbG9iYWxRdWV1ZSgpCiB7CiAgICAgc3RhdGljIGRp
c3BhdGNoX29uY2VfdCBwcmVkOwogICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF57CiAgICAgICAg
IHJ3aVF1ZXVlID0gbmV3IFJlbW90ZUluc3BlY3RvclF1ZXVlOwogICAgICAgICByd2lRdWV1ZU11
dGV4ID0gc3RkOjptYWtlX3VuaXF1ZTxzdGQ6Om11dGV4PigpLnJlbGVhc2UoKTsKIAotICAgICAg
ICBDRlJ1bkxvb3BTb3VyY2VDb250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJjZX07CisgICAgICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgcnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlR2xvYmFsfTsKICAgICAgICAgcndpUnVu
TG9vcFNvdXJjZSA9IENGUnVuTG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAxLCAmcnVuTG9vcFNv
dXJjZUNvbnRleHQpOworCiAgICAgICAgIC8vIEFkZCB0byB0aGUgZGVmYXVsdCBydW4gbG9vcCBt
b2RlIGZvciBkZWZhdWx0IGhhbmRsaW5nLCBhbmQgdGhlIEpTQ29udGV4dCByZW1vdGUgaW5zcGVj
dG9yIHJ1biBsb29wIG1vZGUgd2hlbiBwYXVzZWQuCiAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJj
ZShDRlJ1bkxvb3BHZXRNYWluKCksIHJ3aVJ1bkxvb3BTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSk7CiAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShDRlJ1bkxvb3BHZXRNYWluKCksIHJ3
aVJ1bkxvb3BTb3VyY2UsIEV2ZW50TG9vcDo6cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUoKSk7
CiAgICAgfSk7CiB9CiAKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJj
ZVdpdGhJbmZvKHZvaWQqIGluZm8pCit7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNv
bm5lY3Rpb24gKmRlYnVnZ2FibGVDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVj
dG9yRGVidWdnYWJsZUNvbm5lY3Rpb24qPihpbmZvKTsKKworICAgIFJlbW90ZUluc3BlY3RvclF1
ZXVlIHF1ZXVlQ29weTsKKyAgICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4
PiBsb2NrKGRlYnVnZ2FibGVDb25uZWN0aW9uLT5xdWV1ZU11dGV4KCkpOworICAgICAgICBxdWV1
ZUNvcHkgPSBkZWJ1Z2dhYmxlQ29ubmVjdGlvbi0+cXVldWUoKTsKKyAgICAgICAgZGVidWdnYWJs
ZUNvbm5lY3Rpb24tPmNsZWFyUXVldWUoKTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGJsb2NrIDogcXVldWVDb3B5KQorICAgICAgICBibG9jaygpOworfQorCisKIFJlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVj
dGlvbihSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlLCBOU1N0cmluZyAqY29u
bmVjdGlvbklkZW50aWZpZXIsIE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9y
RGVidWdnYWJsZTo6RGVidWdnYWJsZVR5cGUpCiAgICAgOiBtX2RlYnVnZ2FibGUoZGVidWdnYWJs
ZSkKICAgICAsIG1fY29ubmVjdGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklkZW50aWZpZXIpCkBA
IC0xMzIsMTEgKzExNCwxMiBAQCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6
UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24oUmVtb3RlSQogICAgICwgbV9pZGVu
dGlmaWVyKGRlYnVnZ2FibGUtPmlkZW50aWZpZXIoKSkKICAgICAsIG1fY29ubmVjdGVkKGZhbHNl
KQogewotICAgIFJlbW90ZUluc3BlY3RvckluaXRpYWxpemVRdWV1ZSgpOworICAgIHNldHVwUnVu
TG9vcCgpOwogfQogCiBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6flJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uKCkKIHsKKyAgICB0ZWFyZG93blJ1bkxvb3Ao
KTsKIH0KIAogTlNTdHJpbmcgKlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpk
ZXN0aW5hdGlvbigpIGNvbnN0CkBAIC0xNTEsNiArMTM0LDExIEBAIE5TU3RyaW5nICpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25z
dAogCiB2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFz
eW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jaykoKSkKIHsKKyAgICBpZiAobV9ydW5Mb29wKSB7
CisgICAgICAgIHF1ZXVlVGFza09uUHJpdmF0ZVJ1bkxvb3AoYmxvY2spOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJDb3JlV2ViVGhyZWFk
SXNFbmFibGVkICYmIFdlYkNvcmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgewogICAgICAgICBXZWJD
b3JlV2ViVGhyZWFkUnVuKGJsb2NrKTsKQEAgLTE1OCw3ICsxNDYsNyBAQCB2b2lkIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZv
aWQgKF5ibG9jawogICAgIH0KICNlbmRpZgogCi0gICAgUmVtb3RlSW5zcGVjdG9yUXVldWVUYXNr
KGJsb2NrKTsKKyAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKGJsb2Nr
KTsKIH0KIAogYm9vbCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAo
KQpAQCAtMjM3LDYgKzIyNSw0OCBAQCBib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZQogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpz
ZXR1cFJ1bkxvb3AoKQoreworICAgIENGUnVuTG9vcFJlZiBkZWJ1Z2dlclJ1bkxvb3AgPSBtX2Rl
YnVnZ2FibGUtPmRlYnVnZ2VyUnVuTG9vcCgpOworICAgIGlmICghZGVidWdnZXJSdW5Mb29wKSB7
CisgICAgICAgIFJlbW90ZUluc3BlY3RvckluaXRpYWxpemVHbG9iYWxRdWV1ZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9ydW5Mb29wID0gZGVidWdnZXJSdW5Mb29wOworCisg
ICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCB0aGlz
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mb307CisgICAgbV9y
dW5Mb29wU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDEsICZydW5Mb29w
U291cmNlQ29udGV4dCk7CisKKyAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobV9ydW5Mb29wLmdldCgp
LCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZS
dW5Mb29wQWRkU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBF
dmVudExvb3A6OnJlbW90ZUluc3BlY3RvclJ1bkxvb3BNb2RlKCkpOworfQorCit2b2lkIFJlbW90
ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjp0ZWFyZG93blJ1bkxvb3AoKQoreworICAg
IGlmICghbV9ydW5Mb29wKQorICAgICAgICByZXR1cm47CisKKyAgICBDRlJ1bkxvb3BSZW1vdmVT
b3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSk7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlU291cmNlKG1fcnVuTG9vcC5nZXQoKSwg
bV9ydW5Mb29wU291cmNlLmdldCgpLCBFdmVudExvb3A6OnJlbW90ZUluc3BlY3RvclJ1bkxvb3BN
b2RlKCkpOworCisgICAgbV9ydW5Mb29wID0gbnVsbHB0cjsKKyAgICBtX3J1bkxvb3BTb3VyY2Ug
PSBudWxscHRyOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
OjpxdWV1ZVRhc2tPblByaXZhdGVSdW5Mb29wKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBBU1NF
UlQobV9ydW5Mb29wKTsKKworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0
ZXg+IGxvY2sobV9xdWV1ZU11dGV4KTsKKyAgICAgICAgbV9xdWV1ZS5hcHBlbmQoUmVtb3RlSW5z
cGVjdG9yQmxvY2soYmxvY2spKTsKKyAgICB9CisKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwo
bV9ydW5Mb29wU291cmNlLmdldCgpKTsKKyAgICBDRlJ1bkxvb3BXYWtlVXAobV9ydW5Mb29wLmdl
dCgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUo
UkVNT1RFX0lOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCmluZGV4IDA5NGZhZDAuLjdiZGNiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDU2LDYgKzQ1Niw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvcjo6SlNH
bG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29u
c3QgeyByZXR1cm4gKm1faW5zcGVjdG9yQ29udHJvbGxlci5nZXQoKTsgfQorICAgIEpTR2xvYmFs
T2JqZWN0RGVidWdnYWJsZSYgaW5zcGVjdG9yRGVidWdnYWJsZSgpIHsgcmV0dXJuICptX2luc3Bl
Y3RvckRlYnVnZ2FibGUuZ2V0KCk7IH0KICNlbmRpZgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRDb25zb2xlQ2xpZW50KENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQpIHsgbV9j
b25zb2xlQ2xpZW50ID0gY29uc29sZUNsaWVudDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234016</attachid>
            <date>2014-06-27 14:24:46 -0700</date>
            <delta_ts>2014-06-27 14:24:46 -0700</delta_ts>
            <desc>[PATCH] For Bots 4</desc>
            <filename>for-bots-4.patch</filename>
            <type>text/plain</type>
            <size>23441</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0Lm1tIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KaW5kZXggZWY1OWZlZi4uNzAxYmRk
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHQubW0KQEAgLTI5LDcgKzI5LDcg
QEAKICNpbXBvcnQgIkpTQ0lubGluZXMuaCIKICNpbXBvcnQgIkpTQ29udGV4dEludGVybmFsLmgi
CiAjaW1wb3J0ICJKU0NvbnRleHRQcml2YXRlLmgiCi0jaW1wb3J0ICJKU0NvbnRleHRSZWZQcml2
YXRlLmgiCisjaW1wb3J0ICJKU0NvbnRleHRSZWZJbnRlcm5hbC5oIgogI2ltcG9ydCAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbXBvcnQgIkpTVmFsdWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiSlNWaXJ0
dWFsTWFjaGluZUludGVybmFsLmgiCkBAIC0yMjMsNiArMjIzLDE2IEBAIC0gKHZvaWQpX3NldElu
Y2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnM6KEJPT0wpaW5jbHVk
ZU5hdGl2ZUNhCiAgICAgSlNHbG9iYWxDb250ZXh0U2V0SW5jbHVkZXNOYXRpdmVDYWxsU3RhY2tX
aGVuUmVwb3J0aW5nRXhjZXB0aW9ucyhtX2NvbnRleHQsIGluY2x1ZGVOYXRpdmVDYWxsU3RhY2sp
OwogfQogCistIChDRlJ1bkxvb3BSZWYpX2RlYnVnZ2VyUnVuTG9vcAoreworICAgIHJldHVybiBK
U0dsb2JhbENvbnRleHRHZXREZWJ1Z2dlclJ1bkxvb3AobV9jb250ZXh0KTsKK30KKworLSAodm9p
ZClfc2V0RGVidWdnZXJSdW5Mb29wOihDRlJ1bkxvb3BSZWYpcnVuTG9vcAoreworICAgIEpTR2xv
YmFsQ29udGV4dFNldERlYnVnZ2VyUnVuTG9vcChtX2NvbnRleHQsIHJ1bkxvb3ApOworfQorCiBA
ZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBKU0NvbnRleHQoU3Vic2NyaXB0U3VwcG9ydCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UHJpdmF0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKaW5kZXggODA0NjAxOS4u
N2QxZDBjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQ
cml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRl
LmgKQEAgLTQ0LDYgKzQ0LDEyIEBACiAqLwogQHByb3BlcnR5IChzZXR0ZXI9X3NldEluY2x1ZGVz
TmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnM6KSBCT09MIF9pbmNsdWRlc05h
dGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zIE5TX0FWQUlMQUJMRSgxMF8xMCwg
OF8wKTsKIAorLyohCitAcHJvcGVydHkKK0BkaXNjdXNzaW9uIFNldCB0aGUgcnVuIGxvb3AgdGhl
IFdlYiBJbnNwZWN0b3IgZGVidWdnZXIgc2hvdWxkIHVzZSB3aGVuIGV2YWx1YXRpbmcgSmF2YVNj
cmlwdCBpbiB0aGUgSlNDb250ZXh0LgorKi8KK0Bwcm9wZXJ0eSAoc2V0dGVyPV9zZXREZWJ1Z2dl
clJ1bkxvb3A6KSBDRlJ1bkxvb3BSZWYgX2RlYnVnZ2VyUnVuTG9vcCBOU19BVkFJTEFCTEUoMTBf
MTAsIDhfMCk7CisKIEBlbmQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
Q29udGV4dFJlZi5jcHAKaW5kZXggMjNlMTFmNi4uNjM3Yjk5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMjUsNyArMjUsNyBAQAogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNDb250ZXh0UmVmLmgiCi0jaW5jbHVkZSAiSlNDb250
ZXh0UmVmUHJpdmF0ZS5oIgorI2luY2x1ZGUgIkpTQ29udGV4dFJlZkludGVybmFsLmgiCiAKICNp
bmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCkBAIC00MSw2ICs0MSw3
IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiAjaWYgRU5BQkxFKFJFTU9U
RV9JTlNQRUNUT1IpCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjZW5kaWYKIApAQCAt
MzY3LDMgKzM2OCw0MCBAQCB2b2lkIEpTR2xvYmFsQ29udGV4dFNldEluY2x1ZGVzTmF0aXZlQ2Fs
bFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoSlNHbG9iYWxDbwogI2VuZGlmCiB9CiAKKyNp
ZiBVU0UoQ0YpCitDRlJ1bkxvb3BSZWYgSlNHbG9iYWxDb250ZXh0R2V0RGVidWdnZXJSdW5Mb29w
KEpTR2xvYmFsQ29udGV4dFJlZiBjdHgpCit7CisjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKKworICAgIHJldHVybiBleGVjLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckRlYnVnZ2FibGUoKS5kZWJ1Z2dlclJ1bkxvb3Ao
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGN0eCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cisj
ZW5kaWYKK30KKwordm9pZCBKU0dsb2JhbENvbnRleHRTZXREZWJ1Z2dlclJ1bkxvb3AoSlNHbG9i
YWxDb250ZXh0UmVmIGN0eCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCit7CisjaWYgRU5BQkxFKFJF
TU9URV9JTlNQRUNUT1IpCisgICAgaWYgKCFjdHgpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7CisgICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7CisKKyAgICBleGVjLT52bUVu
dHJ5R2xvYmFsT2JqZWN0KCktPmluc3BlY3RvckRlYnVnZ2FibGUoKS5zZXREZWJ1Z2dlclJ1bkxv
b3AocnVuTG9vcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjdHgpOworICAgIFVOVVNFRF9Q
QVJBTShydW5Mb29wKTsKKyNlbmRpZgorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFByaXZhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNDb250ZXh0UmVmSW50ZXJuYWwuaApzaW1pbGFyaXR5IGluZGV4IDU3JQpjb3B5IGZy
b20gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRQcml2YXRlLmgKY29weSB0byBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZkludGVybmFsLmgKaW5kZXggODA0
NjAxOS4uODU2MzJiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nv
bnRleHRQcml2YXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWZJbnRlcm5hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMjkgKzIzLDM4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYg
SlNDb250ZXh0UHJpdmF0ZV9oCi0jZGVmaW5lIEpTQ29udGV4dFByaXZhdGVfaAorI2lmbmRlZiBK
U0NvbnRleHRSZWZJbnRlcm5hbF9oCisjZGVmaW5lIEpTQ29udGV4dFJlZkludGVybmFsX2gKIAot
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisjaW5jbHVkZSAiSlNDb250ZXh0UmVmUHJpdmF0ZS5o
IgogCi0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHQuaD4KKyNpZiBVU0UoQ0YpCisj
aW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZSdW5Mb29wLmg+CisjZW5kaWYKIAotQGludGVyZmFj
ZSBKU0NvbnRleHQoUHJpdmF0ZSkKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7Cisj
ZW5kaWYKIAorI2lmIFVTRShDRikKIC8qIQotQHByb3BlcnR5Ci1AZGlzY3Vzc2lvbiBSZW1vdGUg
aW5zcGVjdGlvbiBzZXR0aW5nIG9mIHRoZSBKU0NvbnRleHQuIERlZmF1bHQgdmFsdWUgaXMgWUVT
LgorQGZ1bmN0aW9uCitAYWJzdHJhY3QgR2V0cyB0aGUgcnVuIGxvb3AgdXNlZCBieSB0aGUgV2Vi
IEluc3BlY3RvciBkZWJ1Z2dlciB3aGVuIGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiB0aGlzIGNv
bnRleHQuCitAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQgd2hvc2Ugc2V0dGluZyB5b3Ug
d2FudCB0byBnZXQuCiAqLwotQHByb3BlcnR5IChzZXR0ZXI9X3NldFJlbW90ZUluc3BlY3Rpb25F
bmFibGVkOikgQk9PTCBfcmVtb3RlSW5zcGVjdGlvbkVuYWJsZWQgTlNfQVZBSUxBQkxFKDEwXzEw
LCA4XzApOworSlNfRVhQT1JUIENGUnVuTG9vcFJlZiBKU0dsb2JhbENvbnRleHRHZXREZWJ1Z2dl
clJ1bkxvb3AoSlNHbG9iYWxDb250ZXh0UmVmIGN0eCkgQ0ZfQVZBSUxBQkxFKDEwXzEwLCA4XzAp
OwogCiAvKiEKLUBwcm9wZXJ0eQotQGRpc2N1c3Npb24gU2V0IHdoZXRoZXIgb3Igbm90IHRoZSBu
YXRpdmUgY2FsbCBzdGFjayBpcyBpbmNsdWRlZCB3aGVuIHJlcG9ydGluZyBleGNlcHRpb25zLiBE
ZWZhdWx0IHZhbHVlIGlzIFlFUy4KK0BmdW5jdGlvbgorQGFic3RyYWN0IFNldHMgdGhlIHJ1biBs
b29wIHVzZWQgYnkgdGhlIFdlYiBJbnNwZWN0b3IgZGVidWdnZXIgd2hlbiBldmFsdWF0aW5nIEph
dmFTY3JpcHQgaW4gdGhpcyBjb250ZXh0LgorQHBhcmFtIGN0eCBUaGUgSlNHbG9iYWxDb250ZXh0
IHRoYXQgeW91IHdhbnQgdG8gY2hhbmdlLgorQHBhcmFtIHJ1bkxvb3AgVGhlIG5ldyB2YWx1ZSBv
ZiB0aGUgc2V0dGluZyBmb3IgdGhlIGNvbnRleHQuCiAqLwotQHByb3BlcnR5IChzZXR0ZXI9X3Nl
dEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNrV2hlblJlcG9ydGluZ0V4Y2VwdGlvbnM6KSBCT09MIF9p
bmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdFeGNlcHRpb25zIE5TX0FWQUlMQUJM
RSgxMF8xMCwgOF8wKTsKLQotQGVuZAorSlNfRVhQT1JUIHZvaWQgSlNHbG9iYWxDb250ZXh0U2V0
RGVidWdnZXJSdW5Mb29wKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIENGUnVuTG9vcFJlZikgQ0Zf
QVZBSUxBQkxFKDEwXzEwLCA4XzApOworI2VuZGlmCiAKKyNpZmRlZiBfX2NwbHVzcGx1cworfQog
I2VuZGlmCiAKLSNlbmRpZiAvLyBKU0NvbnRleHRJbnRlcm5hbF9oCisjZW5kaWYgLy8gSlNDb250
ZXh0UmVmSW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NvbnRleHRSZWZQcml2YXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4
dFJlZlByaXZhdGUuaAppbmRleCAxNjUwOTA1Li41YTViZWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZlByaXZhdGUuaApAQCAtMTI2LDcgKzEyNiw3IEBA
IEpTX0VYUE9SVCBib29sIEpTR2xvYmFsQ29udGV4dEdldEluY2x1ZGVzTmF0aXZlQ2FsbFN0YWNr
V2hlblJlcG9ydGluZ0V4Y2VwdGlvbnMoCiBAcGFyYW0gY3R4IFRoZSBKU0dsb2JhbENvbnRleHQg
dGhhdCB5b3Ugd2FudCB0byBjaGFuZ2UuCiBAcGFyYW0gaW5jbHVkZU5hdGl2ZUNhbGxTdGFjayBU
aGUgbmV3IHZhbHVlIG9mIHRoZSBzZXR0aW5nIGZvciB0aGUgY29udGV4dC4KICovCi1KU19FWFBP
UlQgdm9pZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBv
cnRpbmdFeGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRp
dmVDYWxsU3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsgICAgCitKU19FWFBPUlQgdm9p
ZCBKU0dsb2JhbENvbnRleHRTZXRJbmNsdWRlc05hdGl2ZUNhbGxTdGFja1doZW5SZXBvcnRpbmdF
eGNlcHRpb25zKEpTR2xvYmFsQ29udGV4dFJlZiBjdHgsIGJvb2wgaW5jbHVkZXNOYXRpdmVDYWxs
U3RhY2spIENGX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBjMDMyZThlLi5iYzc0MjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxNC0wNi0yNiAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQ29udGV4dCBJbnNwZWN0aW9u
OiBQcm92aWRlIGEgd2F5IHRvIHVzZSBhIG5vbi1NYWluIFJ1bkxvb3AgZm9yIEluc3BlY3RvciBK
YXZhU2NyaXB0IEV2YWx1YXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzQzNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEFQSS9KU0NvbnRleHRQcml2YXRlLmg6CisgICAgICAgICogQVBJL0pT
Q29udGV4dC5tbToKKyAgICAgICAgKC1bSlNDb250ZXh0IF9kZWJ1Z2dlclJ1bkxvb3BdKToKKyAg
ICAgICAgKC1bSlNDb250ZXh0IF9zZXREZWJ1Z2dlclJ1bkxvb3A6XSk6CisgICAgICAgIFByaXZh
dGUgQVBJIGZvciBzZXR0aW5nIHRoZSBDRlJ1bkxvb3AgZm9yIGEgZGVidWdnZXIgdG8gZXZhbHVh
dGUgaW4uCisgICAgICAgIAorICAgICAgICAqIEFQSS9KU0NvbnRleHRSZWZJbnRlcm5hbC5oOiBB
ZGRlZC4KKyAgICAgICAgKiBBUEkvSlNDb250ZXh0UmVmLmNwcDoKKyAgICAgICAgKEpTR2xvYmFs
Q29udGV4dEdldERlYnVnZ2VyUnVuTG9vcCk6CisgICAgICAgIChKU0dsb2JhbENvbnRleHRTZXRE
ZWJ1Z2dlclJ1bkxvb3ApOgorICAgICAgICBJbnRlcm5hbCBBUEkgZm9yIHNldHRpbmcgYSBDRlJ1
bkxvb3Agb24gYSBKU0NvbnRleHRSZWYuCisgICAgICAgIFNldCB0aGlzIG9uIHRoZSBkZWJ1Z2dh
YmxlLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rv
ckRlYnVnZ2FibGVDb25uZWN0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3Bl
Y3RvckJsb2NrOjpSZW1vdGVJbnNwZWN0b3JCbG9jayk6CisgICAgICAgIChJbnNwZWN0b3I6OlJl
bW90ZUluc3BlY3RvckJsb2NrOjp+UmVtb3RlSW5zcGVjdG9yQmxvY2spOgorICAgICAgICAoSW5z
cGVjdG9yOjpSZW1vdGVJbnNwZWN0b3JCbG9jazo6b3BlcmF0b3I9KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yQmxvY2s6Om9wZXJhdG9yKCkpOgorICAgICAgICBNb3ZlZCBp
bnRvIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjppbnNwZWN0b3JEZWJ1Z2dhYmxlKToKKyAgICAg
ICAgTGV0cyBzdG9yZSB0aGUgUnVuTG9vcCBvbiB0aGUgZGVidWdnYWJsZSBpbnN0ZWFkIG9mIHRo
aXMgY29yZQorICAgICAgICBwbGF0Zm9ybSBhZ25vc3RpYyBjbGFzcywgc28gZXhwb3NlIHRoZSBk
ZWJ1Z2dhYmxlLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVj
dG9ySGFuZGxlUnVuU291cmNlR2xvYmFsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yUXVldWVUYXNrT25HbG9iYWxRdWV1ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3RvckluaXRpYWxpemVHbG9iYWxRdWV1ZSk6CisgICAgICAgIFJlbmFtZSB0aGUgZ2xv
YmFsIGZ1bmN0aW9ucyBmb3IgY2xhcml0eS4KKworICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mbyk6CisgICAgICAgIEhhbmRsZXIgZm9yIHBy
aXZhdGUgcnVuIGxvb3BzLgorCisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRl
YnVnZ2FibGVDb25uZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbik6
CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
Ojp+UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24pOgorICAgICAgICAoSW5zcGVj
dG9yOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6ZGlzcGF0Y2hBc3luY09u
RGVidWdnYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uOjpzZXR1cFJ1bkxvb3ApOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6dGVhcmRvd25SdW5Mb29wKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb246OnF1ZXVlVGFz
a09uUHJpdmF0ZVJ1bkxvb3ApOgorICAgICAgICBTZXR1cCBhbmQgdGVhcmRvd24gYW5kIHVzZSBw
cml2YXRlIHJ1biBsb29wIHNvdXJjZXMgaWYgdGhlIGRlYnVnZ2FibGUgbmVlZHMgaXQuCisKIDIw
MTQtMDYtMjcgIEzDoXN6bMOzIExhbmfDsyAgPGxsYW5nby51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtKYXZhU2NyaXB0Q29yZV0gRlRMIGJ1aWxkZml4IGZvciBFRkwg
cGxhdGZvcm0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxY2NiMWMuLjlhODky
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzMyLDYgKzEzMzIsNyBAQAog
CQlBNUMzQTFBNjE4QzA0OTAyMDBDOTU5M0EgLyogSlNDb25zb2xlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUMzQTFBNDE4QzA0OTAyMDBD
OTU5M0EgLyogSlNDb25zb2xlQ2xpZW50LmggKi87IH07CiAJCUE1Q0VFRTE0MTg3RjNCQUQwMEU1
NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNUNFRUUxMjE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdl
bnQuY3BwICovOyB9OwogCQlBNUQwQTFCQjE4NjIzMDFCMDBDN0I0OTYgLyogSW5zcGVjdG9yRW52
aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZpcm9ubWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1RDJFNjY1MTk1
RTE3NDAwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVEMkU2NjQxOTVFMTczODAwQTUxOEU3IC8q
IEpTQ29udGV4dFJlZkludGVybmFsLmggKi87IH07CiAJCUE1RkQwMDY3MTg5QUZFOUMwMDYzMzIz
MSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTVGRDAwNjUxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50
cy5jcHAgKi87IH07CiAJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RkQw
MDY2MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNUZEMDA2RDE4OUIwMEFBMDA2MzMy
MzEgLyogU2NyaXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1RkQwMDY5MTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJh
bWUuY3BwICovOyB9OwpAQCAtMjkzMyw2ICsyOTM0LDcgQEAKIAkJQTVDRUVFMTIxODdGM0JBRDAw
RTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTVDRUVFMTMxODdGM0JBRDAwRTU1Qzk5IC8qIEluc3BlY3RvckFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1RDBBMUJBMTg2MjMwMUIwMEM3QjQ5NiAvKiBJbnNwZWN0b3JFbnZp
cm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JFbnZp
cm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUQyRTY2NDE5NUUxNzM4
MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDb250
ZXh0UmVmSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGRDAwNjUx
ODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHRBcmd1bWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNUZEMDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEFyZ3VtZW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUZEMDA2OTE4OUIwMEE5MDA2MzMyMzEgLyog
U2NyaXB0Q2FsbEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNjcmlwdENhbGxGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zOTY1
LDYgKzM5NjcsNyBAQAogCQkJCTg2RTNDNjA5MTY3QkFCODcwMDZENzYwQSAvKiBKU0NvbnRleHRJ
bnRlcm5hbC5oICovLAogCQkJCTE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRS
ZWYuY3BwICovLAogCQkJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAvKiBKU0NvbnRleHRSZWYu
aCAqLywKKwkJCQlBNUQyRTY2NDE5NUUxNzM4MDBBNTE4RTcgLyogSlNDb250ZXh0UmVmSW50ZXJu
YWwuaCAqLywKIAkJCQkxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlNDb250ZXh0UmVmUHJp
dmF0ZS5oICovLAogCQkJCUE3MjAyOEI0MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVubmVy
VXRpbHMuY3BwICovLAogCQkJCUE3MjAyOEI1MTc5NzYwMUUwMDk4MDI4QyAvKiBKU0NUZXN0UnVu
bmVyVXRpbHMuaCAqLywKQEAgLTU1MzcsNiArNTU0MCw3IEBACiAJCQkJMTQ4MTZFMUMxNTRDQzU2
QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNF
QzBFMTZGNUNEMDBCMzQ0NjAgLyogQm9vbGVhbk9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RkVBMDg2MjAxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE1RDJFNjY1MTk1RTE3NDAwMEE1MThFNyAvKiBKU0NvbnRleHRSZWZJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTdEODAxQTUxODgwRDY2RTAwMjZDMzlCIC8qIEJ1aWx0aW5FeGVj
dXRhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8q
IEJ1aWx0aW5OYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0YzOTcxNUVEOEU0NjAwRjE2
N0IyIC8qIEJ1dHRlcmZseS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JE
ZWJ1Z2dhYmxlLmgKaW5kZXggOTAyNzRhZC4uZDQ4MDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3Bl
Y3RvckRlYnVnZ2FibGUuaApAQCAtMjgsNiArMjgsOCBAQAogI2lmbmRlZiBSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlX2gKICNkZWZpbmUgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZV9oCiAKKyNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewpAQCAtNDksNiArNTEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCByZW1vdGVEZWJ1Z2dp
bmdBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd2VkOyB9CiAgICAgdm9pZCBzZXRSZW1v
dGVEZWJ1Z2dpbmdBbGxvd2VkKGJvb2wpOwogCisgICAgQ0ZSdW5Mb29wUmVmIGRlYnVnZ2VyUnVu
TG9vcCgpIHsgcmV0dXJuIG1fcnVuTG9vcC5nZXQoKTsgfQorICAgIHZvaWQgc2V0RGVidWdnZXJS
dW5Mb29wKENGUnVuTG9vcFJlZiBydW5Mb29wKSB7IG1fcnVuTG9vcCA9IHJ1bkxvb3A7IH0KKwog
ICAgIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIGluZm8oKSBjb25zdDsKIAogICAgIGVu
dW0gRGVidWdnYWJsZVR5cGUgeyBKYXZhU2NyaXB0LCBXZWIgfTsKQEAgLTY1LDYgKzcwLDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXI7CiAgICAgYm9vbCBt
X2FsbG93ZWQ7CisgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwogfTsKIAog
c3RydWN0IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9S
ZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5oCmluZGV4IDlkMzlhOWEuLjJiZWM0
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1Jl
bW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rp
b24uaApAQCAtMzgsNiArMzgsNDIgQEAKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgeworICAgIAorY2xhc3MgUmVtb3RlSW5zcGVjdG9yQmxvY2sgeworcHVibGlj
OgorICAgIFJlbW90ZUluc3BlY3RvckJsb2NrKHZvaWQgKF50YXNrKSgpKQorICAgICAgICA6IG1f
dGFzayhCbG9ja19jb3B5KHRhc2spKQorICAgIHsKKyAgICB9CisKKyAgICBSZW1vdGVJbnNwZWN0
b3JCbG9jayhjb25zdCBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3RoZXIpCisgICAgICAgIDogbV90
YXNrKEJsb2NrX2NvcHkob3RoZXIubV90YXNrKSkKKyAgICB7CisgICAgfQorCisgICAgflJlbW90
ZUluc3BlY3RvckJsb2NrKCkKKyAgICB7CisgICAgICAgIEJsb2NrX3JlbGVhc2UobV90YXNrKTsK
KyAgICB9CisKKyAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3BlcmF0b3I9KGNvbnN0IFJlbW90
ZUluc3BlY3RvckJsb2NrJiBvdGhlcikKKyAgICB7CisgICAgICAgIHZvaWQgKF5vbGRUYXNrKSgp
ID0gbV90YXNrOworICAgICAgICBtX3Rhc2sgPSBCbG9ja19jb3B5KG90aGVyLm1fdGFzayk7Cisg
ICAgICAgIEJsb2NrX3JlbGVhc2Uob2xkVGFzayk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoKSBjb25zdAorICAgIHsKKyAgICAgICAgbV90YXNr
KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgKF5tX3Rhc2spKCk7Cit9OworCit0eXBl
ZGVmIFZlY3RvcjxSZW1vdGVJbnNwZWN0b3JCbG9jaz4gUmVtb3RlSW5zcGVjdG9yUXVldWU7CiAK
IGNsYXNzIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9u
PiwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CkBAIC01NiwxNCAr
OTIsMjkgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0JhY2tlbmQoTlNTdHJpbmcg
Kik7CiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKIAorICAgIHN0ZDo6bXV0ZXgmIHF1ZXVlTXV0ZXgoKSB7IHJldHVybiBtX3F1
ZXVlTXV0ZXg7IH0KKyAgICBSZW1vdGVJbnNwZWN0b3JRdWV1ZSBxdWV1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fcXVldWU7IH0KKyAgICB2b2lkIGNsZWFyUXVldWUoKSB7IG1fcXVldWUuY2xlYXIoKTsg
fQorCiBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hBc3luY09uRGVidWdnYWJsZSh2b2lkIChe
YmxvY2spKCkpOwogCisgICAgdm9pZCBzZXR1cFJ1bkxvb3AoKTsKKyAgICB2b2lkIHRlYXJkb3du
UnVuTG9vcCgpOworICAgIHZvaWQgcXVldWVUYXNrT25Qcml2YXRlUnVuTG9vcCh2b2lkICheYmxv
Y2spKCkpOworCiAgICAgLy8gVGhpcyBjb25uZWN0aW9uIGZyb20gdGhlIFJlbW90ZUluc3BlY3Rv
ciBzaW5nbGV0b24gdG8gdGhlIERlYnVnZ2FibGUKICAgICAvLyBjYW4gYmUgdXNlZCBvbiBtdWx0
aXBsZSB0aHJlYWRzLiBTbyBhbnkgYWNjZXNzIHRvIHRoZSBkZWJ1Z2dhYmxlCiAgICAgLy8gaXRz
ZWxmIG11c3QgdGFrZSB0aGlzIG11dGV4IHRvIGVuc3VyZSBtX2RlYnVnZ2FibGUgaXMgdmFsaWQu
CiAgICAgc3RkOjptdXRleCBtX2RlYnVnZ2FibGVNdXRleDsKIAorICAgIC8vIElmIGEgZGVidWdn
YWJsZSBoYXMgYSBzcGVjaWZpYyBydW4gbG9vcCBpdCB3YW50cyB0byBldmFsdWF0ZSBvbgorICAg
IC8vIHdlIHNldHVwIG91ciBydW4gbG9vcCBzb3VyY2VzIG9uIHRoYXQgc3BlY2lmaWMgcnVuIGxv
b3AuCisgICAgUmV0YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOworICAgIFJldGFpblB0
cjxDRlJ1bkxvb3BTb3VyY2VSZWY+IG1fcnVuTG9vcFNvdXJjZTsKKyAgICBSZW1vdGVJbnNwZWN0
b3JRdWV1ZSBtX3F1ZXVlOworICAgIHN0ZDo6bXV0ZXggbV9xdWV1ZU11dGV4OworCiAgICAgUmVt
b3RlSW5zcGVjdG9yRGVidWdnYWJsZSogbV9kZWJ1Z2dhYmxlOwogICAgIFJldGFpblB0cjxOU1N0
cmluZz4gbV9jb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1f
ZGVzdGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3JlbW90ZS9SZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uLm1tCmluZGV4IDQ5OTVkYzEuLjliMmQwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L1JlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uLm1tCkBAIC0zOCw0NiArMzgsMTEg
QEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIFJlbW90ZUluc3BlY3RvckJsb2Nr
IHsKLXB1YmxpYzoKLSAgICBSZW1vdGVJbnNwZWN0b3JCbG9jayh2b2lkIChedGFzaykoKSkKLSAg
ICAgICAgOiBtX3Rhc2soQmxvY2tfY29weSh0YXNrKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVt
b3RlSW5zcGVjdG9yQmxvY2soY29uc3QgUmVtb3RlSW5zcGVjdG9yQmxvY2smIG90aGVyKQotICAg
ICAgICA6IG1fdGFzayhCbG9ja19jb3B5KG90aGVyLm1fdGFzaykpCi0gICAgewotICAgIH0KLQot
ICAgIH5SZW1vdGVJbnNwZWN0b3JCbG9jaygpCi0gICAgewotICAgICAgICBCbG9ja19yZWxlYXNl
KG1fdGFzayk7Ci0gICAgfQotCi0gICAgUmVtb3RlSW5zcGVjdG9yQmxvY2smIG9wZXJhdG9yPShj
b25zdCBSZW1vdGVJbnNwZWN0b3JCbG9jayYgb3RoZXIpCi0gICAgewotICAgICAgICB2b2lkIChe
b2xkVGFzaykoKSA9IG1fdGFzazsKLSAgICAgICAgbV90YXNrID0gQmxvY2tfY29weShvdGhlci5t
X3Rhc2spOwotICAgICAgICBCbG9ja19yZWxlYXNlKG9sZFRhc2spOwotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIG1fdGFzaygpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIChebV90YXNrKSgpOwot
fTsKLQotdHlwZWRlZiBWZWN0b3I8UmVtb3RlSW5zcGVjdG9yQmxvY2s+IFJlbW90ZUluc3BlY3Rv
clF1ZXVlOwogc3RhdGljIHN0ZDo6bXV0ZXgqIHJ3aVF1ZXVlTXV0ZXg7CiBzdGF0aWMgQ0ZSdW5M
b29wU291cmNlUmVmIHJ3aVJ1bkxvb3BTb3VyY2U7CiBzdGF0aWMgUmVtb3RlSW5zcGVjdG9yUXVl
dWUqIHJ3aVF1ZXVlOwogCi1zdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3Vy
Y2Uodm9pZCopCitzdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JIYW5kbGVSdW5Tb3VyY2VHbG9i
YWwodm9pZCopCiB7CiAgICAgQVNTRVJUKENGUnVuTG9vcEdldEN1cnJlbnQoKSA9PSBDRlJ1bkxv
b3BHZXRNYWluKCkpOwogICAgIEFTU0VSVChyd2lRdWV1ZU11dGV4KTsKQEAgLTk1LDcgKzYwLDcg
QEAgc3RhdGljIHZvaWQgUmVtb3RlSW5zcGVjdG9ySGFuZGxlUnVuU291cmNlKHZvaWQqKQogICAg
ICAgICBibG9jaygpOwogfQogCi1zdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2so
dm9pZCAoXnRhc2spKCkpCitzdGF0aWMgdm9pZCBSZW1vdGVJbnNwZWN0b3JRdWV1ZVRhc2tPbkds
b2JhbFF1ZXVlKHZvaWQgKF50YXNrKSgpKQogewogICAgIEFTU0VSVChyd2lRdWV1ZU11dGV4KTsK
ICAgICBBU1NFUlQocndpUnVuTG9vcFNvdXJjZSk7CkBAIC0xMTAsMjEgKzc1LDM4IEBAIHN0YXRp
YyB2b2lkIFJlbW90ZUluc3BlY3RvclF1ZXVlVGFzayh2b2lkIChedGFzaykoKSkKICAgICBDRlJ1
bkxvb3BXYWtlVXAoQ0ZSdW5Mb29wR2V0TWFpbigpKTsKIH0KIAotc3RhdGljIHZvaWQgUmVtb3Rl
SW5zcGVjdG9ySW5pdGlhbGl6ZVF1ZXVlKCkKK3N0YXRpYyB2b2lkIFJlbW90ZUluc3BlY3Rvcklu
aXRpYWxpemVHbG9iYWxRdWV1ZSgpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBwcmVk
OwogICAgIGRpc3BhdGNoX29uY2UoJnByZWQsIF57CiAgICAgICAgIHJ3aVF1ZXVlID0gbmV3IFJl
bW90ZUluc3BlY3RvclF1ZXVlOwogICAgICAgICByd2lRdWV1ZU11dGV4ID0gc3RkOjptYWtlX3Vu
aXF1ZTxzdGQ6Om11dGV4PigpLnJlbGVhc2UoKTsKIAotICAgICAgICBDRlJ1bkxvb3BTb3VyY2VD
b250ZXh0IHJ1bkxvb3BTb3VyY2VDb250ZXh0ID0gezAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFJlbW90ZUlu
c3BlY3RvckhhbmRsZVJ1blNvdXJjZX07CisgICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQg
cnVuTG9vcFNvdXJjZUNvbnRleHQgPSB7MCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgUmVtb3RlSW5zcGVjdG9y
SGFuZGxlUnVuU291cmNlR2xvYmFsfTsKICAgICAgICAgcndpUnVuTG9vcFNvdXJjZSA9IENGUnVu
TG9vcFNvdXJjZUNyZWF0ZShudWxscHRyLCAxLCAmcnVuTG9vcFNvdXJjZUNvbnRleHQpOworCiAg
ICAgICAgIC8vIEFkZCB0byB0aGUgZGVmYXVsdCBydW4gbG9vcCBtb2RlIGZvciBkZWZhdWx0IGhh
bmRsaW5nLCBhbmQgdGhlIEpTQ29udGV4dCByZW1vdGUgaW5zcGVjdG9yIHJ1biBsb29wIG1vZGUg
d2hlbiBwYXVzZWQuCiAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShDRlJ1bkxvb3BHZXRNYWlu
KCksIHJ3aVJ1bkxvb3BTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CiAgICAgICAgIENG
UnVuTG9vcEFkZFNvdXJjZShDRlJ1bkxvb3BHZXRNYWluKCksIHJ3aVJ1bkxvb3BTb3VyY2UsIEV2
ZW50TG9vcDo6cmVtb3RlSW5zcGVjdG9yUnVuTG9vcE1vZGUoKSk7CiAgICAgfSk7CiB9CiAKK3N0
YXRpYyB2b2lkIFJlbW90ZUluc3BlY3RvckhhbmRsZVJ1blNvdXJjZVdpdGhJbmZvKHZvaWQqIGlu
Zm8pCit7CisgICAgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5lY3Rpb24gKmRlYnVnZ2Fi
bGVDb25uZWN0aW9uID0gc3RhdGljX2Nhc3Q8UmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZUNvbm5l
Y3Rpb24qPihpbmZvKTsKKworICAgIFJlbW90ZUluc3BlY3RvclF1ZXVlIHF1ZXVlQ29weTsKKyAg
ICB7CisgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrKGRlYnVnZ2FibGVD
b25uZWN0aW9uLT5xdWV1ZU11dGV4KCkpOworICAgICAgICBxdWV1ZUNvcHkgPSBkZWJ1Z2dhYmxl
Q29ubmVjdGlvbi0+cXVldWUoKTsKKyAgICAgICAgZGVidWdnYWJsZUNvbm5lY3Rpb24tPmNsZWFy
UXVldWUoKTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGJsb2NrIDogcXVldWVDb3B5
KQorICAgICAgICBibG9jaygpOworfQorCisKIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25u
ZWN0aW9uOjpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbihSZW1vdGVJbnNwZWN0
b3JEZWJ1Z2dhYmxlKiBkZWJ1Z2dhYmxlLCBOU1N0cmluZyAqY29ubmVjdGlvbklkZW50aWZpZXIs
IE5TU3RyaW5nICpkZXN0aW5hdGlvbiwgUmVtb3RlSW5zcGVjdG9yRGVidWdnYWJsZTo6RGVidWdn
YWJsZVR5cGUpCiAgICAgOiBtX2RlYnVnZ2FibGUoZGVidWdnYWJsZSkKICAgICAsIG1fY29ubmVj
dGlvbklkZW50aWZpZXIoY29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC0xMzIsMTEgKzExNCwxMiBA
QCBSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6UmVtb3RlSW5zcGVjdG9yRGVi
dWdnYWJsZUNvbm5lY3Rpb24oUmVtb3RlSQogICAgICwgbV9pZGVudGlmaWVyKGRlYnVnZ2FibGUt
PmlkZW50aWZpZXIoKSkKICAgICAsIG1fY29ubmVjdGVkKGZhbHNlKQogewotICAgIFJlbW90ZUlu
c3BlY3RvckluaXRpYWxpemVRdWV1ZSgpOworICAgIHNldHVwUnVuTG9vcCgpOwogfQogCiBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6flJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uKCkKIHsKKyAgICB0ZWFyZG93blJ1bkxvb3AoKTsKIH0KIAogTlNTdHJpbmcg
KlJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkZXN0aW5hdGlvbigpIGNvbnN0
CkBAIC0xNTEsNiArMTM0LDExIEBAIE5TU3RyaW5nICpSZW1vdGVJbnNwZWN0b3JEZWJ1Z2dhYmxl
Q29ubmVjdGlvbjo6Y29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIFJlbW90ZUlu
c3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZv
aWQgKF5ibG9jaykoKSkKIHsKKyAgICBpZiAobV9ydW5Mb29wKSB7CisgICAgICAgIHF1ZXVlVGFz
a09uUHJpdmF0ZVJ1bkxvb3AoYmxvY2spOworICAgICAgICByZXR1cm47CisgICAgfQorCiAjaWYg
UExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJDb3JlV2ViVGhyZWFkSXNFbmFibGVkICYmIFdlYkNv
cmVXZWJUaHJlYWRJc0VuYWJsZWQoKSkgewogICAgICAgICBXZWJDb3JlV2ViVGhyZWFkUnVuKGJs
b2NrKTsKQEAgLTE1OCw3ICsxNDYsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVD
b25uZWN0aW9uOjpkaXNwYXRjaEFzeW5jT25EZWJ1Z2dhYmxlKHZvaWQgKF5ibG9jawogICAgIH0K
ICNlbmRpZgogCi0gICAgUmVtb3RlSW5zcGVjdG9yUXVldWVUYXNrKGJsb2NrKTsKKyAgICBSZW1v
dGVJbnNwZWN0b3JRdWV1ZVRhc2tPbkdsb2JhbFF1ZXVlKGJsb2NrKTsKIH0KIAogYm9vbCBSZW1v
dGVJbnNwZWN0b3JEZWJ1Z2dhYmxlQ29ubmVjdGlvbjo6c2V0dXAoKQpAQCAtMjM3LDYgKzIyNSw0
OCBAQCBib29sIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpzZXR1cFJ1bkxvb3AoKQorewor
ICAgIENGUnVuTG9vcFJlZiBkZWJ1Z2dlclJ1bkxvb3AgPSBtX2RlYnVnZ2FibGUtPmRlYnVnZ2Vy
UnVuTG9vcCgpOworICAgIGlmICghZGVidWdnZXJSdW5Mb29wKSB7CisgICAgICAgIFJlbW90ZUlu
c3BlY3RvckluaXRpYWxpemVHbG9iYWxRdWV1ZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgbV9ydW5Mb29wID0gZGVidWdnZXJSdW5Mb29wOworCisgICAgQ0ZSdW5Mb29wU291cmNl
Q29udGV4dCBydW5Mb29wU291cmNlQ29udGV4dCA9IHswLCB0aGlzLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBSZW1vdGVJbnNw
ZWN0b3JIYW5kbGVSdW5Tb3VyY2VXaXRoSW5mb307CisgICAgbV9ydW5Mb29wU291cmNlID0gQ0ZS
dW5Mb29wU291cmNlQ3JlYXRlKG51bGxwdHIsIDEsICZydW5Mb29wU291cmNlQ29udGV4dCk7CisK
KyAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobV9ydW5Mb29wLmdldCgpLCBtX3J1bkxvb3BTb3VyY2Uu
Z2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAgQ0ZSdW5Mb29wQWRkU291cmNlKG1f
cnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdldCgpLCBFdmVudExvb3A6OnJlbW90ZUlu
c3BlY3RvclJ1bkxvb3BNb2RlKCkpOworfQorCit2b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2Fi
bGVDb25uZWN0aW9uOjp0ZWFyZG93blJ1bkxvb3AoKQoreworICAgIGlmICghbV9ydW5Mb29wKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDRlJ1bkxvb3BSZW1vdmVTb3VyY2UobV9ydW5Mb29wLmdl
dCgpLCBtX3J1bkxvb3BTb3VyY2UuZ2V0KCksIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisgICAg
Q0ZSdW5Mb29wUmVtb3ZlU291cmNlKG1fcnVuTG9vcC5nZXQoKSwgbV9ydW5Mb29wU291cmNlLmdl
dCgpLCBFdmVudExvb3A6OnJlbW90ZUluc3BlY3RvclJ1bkxvb3BNb2RlKCkpOworCisgICAgbV9y
dW5Mb29wID0gbnVsbHB0cjsKKyAgICBtX3J1bkxvb3BTb3VyY2UgPSBudWxscHRyOworfQorCit2
b2lkIFJlbW90ZUluc3BlY3RvckRlYnVnZ2FibGVDb25uZWN0aW9uOjpxdWV1ZVRhc2tPblByaXZh
dGVSdW5Mb29wKHZvaWQgKF5ibG9jaykoKSkKK3sKKyAgICBBU1NFUlQobV9ydW5Mb29wKTsKKwor
ICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2sobV9xdWV1ZU11
dGV4KTsKKyAgICAgICAgbV9xdWV1ZS5hcHBlbmQoUmVtb3RlSW5zcGVjdG9yQmxvY2soYmxvY2sp
KTsKKyAgICB9CisKKyAgICBDRlJ1bkxvb3BTb3VyY2VTaWduYWwobV9ydW5Mb29wU291cmNlLmdl
dCgpKTsKKyAgICBDRlJ1bkxvb3BXYWtlVXAobV9ydW5Mb29wLmdldCgpKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCiAKICNlbmRpZiAvLyBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IDA5NGZhZDAuLjdiZGNiNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtNDU2LDYgKzQ1Niw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgIEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RJbnNwZWN0
b3JDb250cm9sbGVyJiBpbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gKm1faW5z
cGVjdG9yQ29udHJvbGxlci5nZXQoKTsgfQorICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZSYg
aW5zcGVjdG9yRGVidWdnYWJsZSgpIHsgcmV0dXJuICptX2luc3BlY3RvckRlYnVnZ2FibGUuZ2V0
KCk7IH0KICNlbmRpZgogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRDb25zb2xlQ2xp
ZW50KENvbnNvbGVDbGllbnQqIGNvbnNvbGVDbGllbnQpIHsgbV9jb25zb2xlQ2xpZW50ID0gY29u
c29sZUNsaWVudDsgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>