<?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>37554</bug_id>
          
          <creation_ts>2010-04-13 23:42:02 -0700</creation_ts>
          <short_desc>REGRESSION: fast/workers/wrapper-map-gc.html crashes on Snow Leopard Release Bot</short_desc>
          <delta_ts>2010-04-28 12:40: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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Dmitry Titov">dimich</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212269</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-13 23:42:02 -0700</bug_when>
    <thetext>fast/workers/wrapper-map-gc.html crashed on Snow Leopard Release Bot

http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57566%20(8248)/results.html

Sorry I don&apos;t have a stack trace for you (yet).  I believe I&apos;ve seen this one crash once before but I couldn&apos;t find a bug on it.

http://trac.webkit.org/browser/trunk/LayoutTests/fast/workers/wrapper-map-gc.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212425</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 10:43:24 -0700</bug_when>
    <thetext>Again just now:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57587%20(8273)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212485</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 12:20:34 -0700</bug_when>
    <thetext>Struck again:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57593%20(8279)/results.html

Given this has reproduced 3 times just this morning, I expect it should be easy to repro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212578</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 14:36:59 -0700</bug_when>
    <thetext>Yeah, I think something might have recently regressed to cause this to get so flaky.
Again just now:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57604%20(8293)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212755</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-14 22:43:49 -0700</bug_when>
    <thetext>This appears to be crashing most builds.  Something is definitely wrong.
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57630%20(8320)/results.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57631%20(8322)/results.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57633%20(8323)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213787</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 12:20:45 -0700</bug_when>
    <thetext>This test continues to crash super often:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57795%20(8494)/results.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57794%20(8492)/results.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57790%20(8488)/results.html
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r57788%20(8481)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213801</commentid>
    <comment_count>6</comment_count>
      <attachid>53635</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 14:20:24 -0700</bug_when>
    <thetext>Created attachment 53635
crash log

This crash is super-easy to repro locally.

run-webkit-tests --debug --iterations 100  fast/workers/wrapper-map-gc.html

did it for me.  Crash log attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213803</commentid>
    <comment_count>7</comment_count>
      <attachid>53635</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 14:23:09 -0700</bug_when>
    <thetext>Comment on attachment 53635
crash log

Looks like it hit this ASSERT:
    ASSERT(isUndefinedOrNull());
http://trac.webkit.org/browser/trunk/JavaScriptCore/runtime/JSValue.cpp#L78

That ASSERT has been there forever (added by ggaren).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213804</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 14:23:38 -0700</bug_when>
    <thetext>Maybe Geoff can offer some insight as to what Workers is doing wrong here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214325</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-19 16:28:10 -0700</bug_when>
    <thetext>It looks like the JavaScript wrapper being used as &apos;this&apos; on this test is garbage. Not sure why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215121</commentid>
    <comment_count>10</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-20 20:41:42 -0700</bug_when>
    <thetext>It was broken by introducing the possibility for a JS wrapper of WorkerContext be returned as 0 in case of terminated worker, to prevent the re-entry into JS (r57349). It works fine if all the places that get the wrapper before invoking JS check for the value. JSEventListener did not, so if worker&apos;s JS execution was terminated between pulling globalObject (returns 0 for terminated worker, there is a check) and getting a wrapper for the &apos;this&apos; (returns 0 for terminated worker, no check) - the subsequent attempt to run a listener function crashes.

Note there is no need to synchronize checks here, even though the termination is requested on one thread and the value of a flag is used on another - once the JS execution on worker thread is set up properly, it&apos;s ok to go into it since it will be terminated by JSC::Terminator causing an exception eventually.

So, I broke it :-(. My only excuse is that I wrote the test that caught the borkage and I now have a fix :-) Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215123</commentid>
    <comment_count>11</comment_count>
      <attachid>53914</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-20 20:49:54 -0700</bug_when>
    <thetext>Created attachment 53914
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215245</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-21 04:27:36 -0700</bug_when>
    <thetext>Looks sane to me, but someone with more recent experience in JSC should probably r+ this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215359</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-21 09:32:50 -0700</bug_when>
    <thetext>Thanks Dmitry, I think I understand what&apos;s going on here now.

The ASSERT you ran into reflects a JSC philosophy that it&apos;s an error for the runtime ever to encounter a JSValue that is not a standard JavaScript value. We allow clients to construct an empty JSValue() / null C pointer, for their convenience, but we don&apos;t allow clients to pass an empty JSValue() / null C pointer into JSC.

So, your change in JSWorkerContextBase.cpp is the right thing to do.

However, I have two questions about the rest of the patch:

1. If a WorkerContext wants to prevent events from firing, isn&apos;t encoding that information in JSEventListener::handleEvent pretty far afield? It would be better if we could separate concerns, so that JSEventListener didn&apos;t have to know about the internal implementation details of WorkerContext. I wonder if WorkerContext could just override &quot;virtual bool dispatchEvent(PassRefPtr&lt;Event&gt;);&quot;, and have it do nothing in the case where the WorkerContext&apos;s m_executionForbidden flag has been set.

2. Doesn&apos;t ScheduledAction::execute need to be patched too? It seems to assume that workerContextWrapper() will not return 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215361</commentid>
    <comment_count>14</comment_count>
      <attachid>53914</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-21 09:33:13 -0700</bug_when>
    <thetext>Comment on attachment 53914
Patch.

r- because I think there&apos;s a better way to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215516</commentid>
    <comment_count>15</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-21 14:53:15 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; However, I have two questions about the rest of the patch:
&gt; 
&gt; 1. If a WorkerContext wants to prevent events from firing, isn&apos;t encoding that
&gt; information in JSEventListener::handleEvent pretty far afield? It would be
&gt; better if we could separate concerns, so that JSEventListener didn&apos;t have to
&gt; know about the internal implementation details of WorkerContext. I wonder if
&gt; WorkerContext could just override &quot;virtual bool
&gt; dispatchEvent(PassRefPtr&lt;Event&gt;);&quot;, and have it do nothing in the case where
&gt; the WorkerContext&apos;s m_executionForbidden flag has been set.
&gt; 
&gt; 2. Doesn&apos;t ScheduledAction::execute need to be patched too? It seems to assume
&gt; that workerContextWrapper() will not return 0.

#1 - that was the first idea, for both JSC and V8 implementations - to check some flag on WorkerScriptController early on.  However, it translated into need to add this check to so many places.. We have many EventTargets, even in Workers, various evaluate() methods, callbacks (like in databases), even things like conversion of JS types to string can reenter JS (at least in V8 they do). All of those places pull the global object or context in some form in order to enter JS - and many places already check for null, using this pattern (or similar):

JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(scriptExecutionContext, m_isolatedWorld.get());
if (!globalObject)
    return;
    
So it seems logical to avoid lots of extra piping (to pull WorkerScriptController or some Worker-independent way to figure out the scripting engine was terminated) and just make it official that an attempt to pull the global object wrapper before running some JS can return no wrapper and we need checks for that.

Also, it seems a better trap for errors, because returning 0 globalObject will likely cause crash, while silent eventual executing of some event handlers may go unnoticed for a while and create more problems down the road. It could also be harder to figure out since the crashes could happen later in the code and vary in signature.

In addition to being more centralized, returning null context/globalObject also makes code for JCS and V8 be similar. In case of V8, there are more &quot;js entry&quot; points that has to be guarded against reentry, so having to pull WorkerScriptController (or even more ubiquitous ScriptExecutionContext) to all necessary places would be hard and would simply add another check to existing checks for null context.

There is a bit more discussion in bug 37053, which introduced returning 0.

It&apos;s possible to remove returning 0 from WorkerScriptController::workerContextWrapper() and add a virtual dispatchEvent() as you propose but it immediately breaks test from bug 37053 and perhaps introduces more issues not yet covered by tests. I&apos;d prefer to keep the crash we have now, at least we will be able to recognize the root issue (running JS in terminated worker) because those crashes, while timing-dependent, would look similar.

#2 is currently impossible in Workers (due to the way timers work there, via WorkerRunLoop) and I left it w/o check intentionally to make sure it crashes if there is a regression in the way WorkerRunLoop processes tasks.

Could you please weight this and let me know what you think? I could have added more info in the beginning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215987</commentid>
    <comment_count>16</comment_count>
      <attachid>54081</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-22 11:40:04 -0700</bug_when>
    <thetext>Created attachment 54081
Added check in ScheduledAction

I&apos;ve added a check in Scheduled action, it makes sense to have this checks in all places that may be in worker&apos;s code .

I&apos;m still feeling the check for the global object wrapper performed down the hierarchy is the right thing. For example, dispatchEvent() invokes a non-virtual fireEventListeners which has a loop over all registered event handler functions and invoke them one after another. If the execution was terminated in the middle of one, we want to avoid invoking the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215988</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-22 11:41:12 -0700</bug_when>
    <thetext>Attachment 54081 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/bindings/js/JSEventListener.cpp:118:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 4 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>215989</commentid>
    <comment_count>18</comment_count>
      <attachid>54082</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-22 11:44:25 -0700</bug_when>
    <thetext>Created attachment 54082
Patch.

Fixed style issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217230</commentid>
    <comment_count>19</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-26 12:54:12 -0700</bug_when>
    <thetext>I think this is ready for another look. I&apos;ve changed ScheduledAction. Also decided to leave the check for 0 context low in the call hierarchy and tried to explain the reasons above. Lets iterate?

This test crashes ~1 out of 3 runs on SL lately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217901</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 13:44:23 -0700</bug_when>
    <thetext>Again: http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r58328%20(9058)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217905</commentid>
    <comment_count>21</comment_count>
      <attachid>54082</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-04-27 13:47:31 -0700</bug_when>
    <thetext>Comment on attachment 54082
Patch.

I&apos;d like ggaren to take another look, but this crash is happening really often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218040</commentid>
    <comment_count>22</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-27 16:45:56 -0700</bug_when>
    <thetext>It&apos;s hard to get ggaren for a chat :-)

From what I could glean from a brief IRC conversation, he would really like to see more explicit check rather then a null check on a pointer. I tend to agree since there is no precedent of checking a result of toJS(..) for 0. On another hand, it&apos;s best not to pull some high-level objects like WorkerScriptController down to JS level to do checks.

I&apos;m experimenting with another patch, will upload soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218054</commentid>
    <comment_count>23</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-27 17:01:06 -0700</bug_when>
    <thetext>It&apos;s not good that workerContextWrapper() can magically become 0 at any time from another thread. This means that all clients of workerContextWrapper(), implicit and explicit, must constantly check for 0, or whatever it might transmute into, like jsNull(), even within the subcomponents of a given expression. That&apos;s crazy!

In this patch, you&apos;ve missed at least three other place that need to check the magic crash bit:

    JSValue handleEventFunction = jsFunction-&gt;get(exec, Identifier(exec, &quot;handleEvent&quot;));

    JSC::call(exec, handleEventFunction, callType, callData, jsFunction, args)

    event-&gt;storeResult(ustringToString(retval.toString(exec)));

I&apos;m not sure if you&apos;ve missed other places, too. It&apos;s very difficult to reason about a magic multithreaded bit that can cause your program to crash at any time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218055</commentid>
    <comment_count>24</comment_count>
      <attachid>54082</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-27 17:02:16 -0700</bug_when>
    <thetext>Comment on attachment 54082
Patch.

Please add tests for the cases that you missed, and fix those cases.

I think the right fix would be to move away from a magic threaded bit that can cause WebKit to crash at any time, but maybe someone else has an even better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218085</commentid>
    <comment_count>25</comment_count>
      <attachid>54484</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-27 17:34:06 -0700</bug_when>
    <thetext>Created attachment 54484
Patch with a more explicit check.

I hope this is better. I&apos;ve added ScriptExecutionContext::isJSExecutionTerminated(), which is always &apos;false&apos; for Document and becomes &apos;true&apos; for WorkerContext once Worker.terminate() or WorkerGlobalScope.clsoe() is invoked.

Apparently, JSC does not crash on reentry while execution is terminated, it will just cause another exception and almost immediate exit from the JS fragment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218106</commentid>
    <comment_count>26</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-27 18:03:09 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 54082 [details])
&gt; Please add tests for the cases that you missed, and fix those cases.
&gt; 
&gt; I think the right fix would be to move away from a magic threaded bit that can
&gt; cause WebKit to crash at any time, but maybe someone else has an even better
&gt; solution.

I think there are no more missed cases, this fixes wrapper-map-gc.html for JSC. There is no more 0 pointers returned from toJS. My understanding of the code is that GlobalData::terminator will raise a new exception on reentry and exit execution.

As I understand your recommended to have an explicit check, avoid context pointer to be returned as 0, and you also suggested that it is not necessarily to check before every JS entry point, since JSC (unlike v8) tolerates reentry. The attached patch does this.

I don&apos;t know how to find all the entry points into JS, how to write tests for that etc. While there is a remote chance of something breaking once JS execution starts throwing termination exception, it doesn&apos;t seem practical to try to add checks everywhere. It&apos;s better to write more tests with time on using Workers in various modes, find those issues and fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218466</commentid>
    <comment_count>27</comment_count>
      <attachid>54484</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2010-04-28 10:47:56 -0700</bug_when>
    <thetext>Comment on attachment 54484
Patch with a more explicit check.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218568</commentid>
    <comment_count>28</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2010-04-28 12:40:39 -0700</bug_when>
    <thetext>Landed: http://trac.webkit.org/changeset/58421</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>53635</attachid>
            <date>2010-04-18 14:20:24 -0700</date>
            <delta_ts>2010-04-18 14:23:09 -0700</delta_ts>
            <desc>crash log</desc>
            <filename>DumpRenderTree_2010-04-18-141821_HackTop.crash</filename>
            <type>text/plain</type>
            <size>27495</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">UHJvY2VzczogICAgICAgICBEdW1wUmVuZGVyVHJlZSBbNTI1NjhdClBhdGg6ICAgICAgICAgICAg
L1N0dWZmL1Byb2plY3RzL2J1aWxkL0RlYnVnL0R1bXBSZW5kZXJUcmVlCklkZW50aWZpZXI6ICAg
ICAgRHVtcFJlbmRlclRyZWUKVmVyc2lvbjogICAgICAgICA/Pz8gKD8/PykKQ29kZSBUeXBlOiAg
ICAgICBYODYgKE5hdGl2ZSkKUGFyZW50IFByb2Nlc3M6ICBwZXJsNS4xMC4wIFs0ODkyMl0KCkRh
dGUvVGltZTogICAgICAgMjAxMC0wNC0xOCAxNDoxNjoxOC41MDggLTA3MDAKT1MgVmVyc2lvbjog
ICAgICBNYWMgT1MgWCAxMC42LjMgKDEwRDU3MykKUmVwb3J0IFZlcnNpb246ICA2CgpFeGNlcHRp
b24gVHlwZTogIEVYQ19CQURfQUNDRVNTIChTSUdTRUdWKQpFeGNlcHRpb24gQ29kZXM6IEtFUk5f
SU5WQUxJRF9BRERSRVNTIGF0IDB4MDAwMDAwMDBiYmFkYmVlZgpDcmFzaGVkIFRocmVhZDogIDQg
IFdlYkNvcmU6IFdvcmtlcgoKVGhyZWFkIDA6ICBEaXNwYXRjaCBxdWV1ZTogY29tLmFwcGxlLm1h
aW4tdGhyZWFkCjAgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5MjdmMDZlNiBD
RkJhc2ljSGFzaEFkZFZhbHVlICsgNDA2CjEgICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAg
ICAJMHg5MjgxMWJlMCBDRlNldEFkZFZhbHVlICsgMzUyCjIgICBjb20uYXBwbGUuQ29yZUZvdW5k
YXRpb24gICAgICAJMHg5Mjg0M2YxOSBDRlJ1bkxvb3BBZGRUaW1lciArIDUyMQozICAgY29tLmFw
cGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAxZmFiZjQgV1RGOjpwb3N0VGltZXIoKSArIDIy
MCAoTWFpblRocmVhZE1hYy5tbTo4NikKNCAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAg
IAkweDAwMWZhYzVmIFdURjo6c2NoZWR1bGVEaXNwYXRjaEZ1bmN0aW9uc09uTWFpblRocmVhZCgp
ICsgOTkgKE1haW5UaHJlYWRNYWMubW06OTUpCjUgICBjb20uYXBwbGUuSmF2YVNjcmlwdENvcmUg
ICAgICAJMHgwMDFmYTI0ZCBXVEY6OmRpc3BhdGNoRnVuY3Rpb25zRnJvbU1haW5UaHJlYWQoKSAr
IDM0MiAoTWFpblRocmVhZC5jcHA6MTA5KQo2ICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAg
ICAgCTB4MDAxZmFjZDggLVtXVEZNYWluVGhyZWFkQ2FsbGVyIGNhbGxdICsgMTEgKE1haW5UaHJl
YWRNYWMubW06NDcpCjcgICBjb20uYXBwbGUuRm91bmRhdGlvbiAgICAgICAgICAJMHg5MjE2ZWRl
NSBfX05TVGhyZWFkUGVyZm9ybVBlcmZvcm0gKyA1MDYKOCAgIGNvbS5hcHBsZS5Db3JlRm91bmRh
dGlvbiAgICAgIAkweDkyODFlMTViIF9fQ0ZSdW5Mb29wRG9Tb3VyY2VzMCArIDE1NjMKOSAgIGNv
bS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkweDkyODFiYzFmIF9fQ0ZSdW5Mb29wUnVuICsg
MTA3MQoxMCAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTI4MWIwZjQgQ0ZSdW5M
b29wUnVuU3BlY2lmaWMgKyA0NTIKMTEgIGNvbS5hcHBsZS5Db3JlRm91bmRhdGlvbiAgICAgIAkw
eDkyODFhZjIxIENGUnVuTG9vcFJ1bkluTW9kZSArIDk3CjEyICBjb20uYXBwbGUuRm91bmRhdGlv
biAgICAgICAgICAJMHg5MjE5MjM4MCAtW05TUnVuTG9vcChOU1J1bkxvb3ApIHJ1bk1vZGU6YmVm
b3JlRGF0ZTpdICsgMjc5CjEzICBEdW1wUmVuZGVyVHJlZSAgICAgICAgICAgICAgICAJMHgwMDAw
ZTFiNCBydW5UZXN0KHN0ZDo6c3RyaW5nIGNvbnN0JikgKyAxODAxIChEdW1wUmVuZGVyVHJlZS5t
bToxMjU2KQoxNCAgRHVtcFJlbmRlclRyZWUgICAgICAgICAgICAgICAgCTB4MDAwMGU2NmIgcnVu
VGVzdGluZ1NlcnZlckxvb3AoKSArIDE1MiAoRHVtcFJlbmRlclRyZWUubW06NTk1KQoxNSAgRHVt
cFJlbmRlclRyZWUgICAgICAgICAgICAgICAgCTB4MDAwMGU5MWIgZHVtcFJlbmRlclRyZWUoaW50
LCBjaGFyIGNvbnN0KiopICsgMzQwIChEdW1wUmVuZGVyVHJlZS5tbTo2NTEpCjE2ICBEdW1wUmVu
ZGVyVHJlZSAgICAgICAgICAgICAgICAJMHgwMDAwZWI0NiBtYWluICsgOTQgKER1bXBSZW5kZXJU
cmVlLm1tOjY5MykKMTcgIER1bXBSZW5kZXJUcmVlICAgICAgICAgICAgICAgIAkweDAwMDAzMTFk
IHN0YXJ0ICsgNTMKClRocmVhZCAxOiAgRGlzcGF0Y2ggcXVldWU6IGNvbS5hcHBsZS5saWJkaXNw
YXRjaC1tYW5hZ2VyCjAgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5N2I3ZGI0
MiBrZXZlbnQgKyAxMAoxICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTdiN2Uy
NWMgX2Rpc3BhdGNoX21ncl9pbnZva2UgKyAyMTUKMiAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAg
ICAgICAgIAkweDk3YjdkNzE5IF9kaXNwYXRjaF9xdWV1ZV9pbnZva2UgKyAxNjMKMyAgIGxpYlN5
c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk3YjdkNGJlIF9kaXNwYXRjaF93b3JrZXJfdGhy
ZWFkMiArIDI0MAo0ICAgbGliU3lzdGVtLkIuZHlsaWIgICAgICAgICAgICAgCTB4OTdiN2NmNDEg
X3B0aHJlYWRfd3F0aHJlYWQgKyAzOTAKNSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAg
IAkweDk3YjdjZDg2IHN0YXJ0X3dxdGhyZWFkICsgMzAKClRocmVhZCAyOgowICAgbGliU3lzdGVt
LkIuZHlsaWIgICAgICAgICAgICAgCTB4OTdiN2NiZDIgX193b3JrcV9rZXJucmV0dXJuICsgMTAK
MSAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk3YjdkMTY4IF9wdGhyZWFkX3dx
dGhyZWFkICsgOTQxCjIgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5N2I3Y2Q4
NiBzdGFydF93cXRocmVhZCArIDMwCgpUaHJlYWQgMzoKMCAgIGxpYlN5c3RlbS5CLmR5bGliICAg
ICAgICAgICAgIAkweDk3YjU3MmZhIG1hY2hfbXNnX3RyYXAgKyAxMAoxICAgbGliU3lzdGVtLkIu
ZHlsaWIgICAgICAgICAgICAgCTB4OTdiNTdhNjcgbWFjaF9tc2cgKyA2OAoyICAgY29tLmFwcGxl
LkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTI4MWMwMGYgX19DRlJ1bkxvb3BSdW4gKyAyMDc5CjMg
ICBjb20uYXBwbGUuQ29yZUZvdW5kYXRpb24gICAgICAJMHg5MjgxYjBmNCBDRlJ1bkxvb3BSdW5T
cGVjaWZpYyArIDQ1Mgo0ICAgY29tLmFwcGxlLkNvcmVGb3VuZGF0aW9uICAgICAgCTB4OTI4MWFm
MjEgQ0ZSdW5Mb29wUnVuSW5Nb2RlICsgOTcKNSAgIGNvbS5hcHBsZS5Gb3VuZGF0aW9uICAgICAg
ICAgIAkweDkyMTkxNDM0ICtbTlNVUkxDb25uZWN0aW9uKE5TVVJMQ29ubmVjdGlvblJlYWxseUlu
dGVybmFsKSBfcmVzb3VyY2VMb2FkTG9vcDpdICsgMzI5CjYgICBjb20uYXBwbGUuRm91bmRhdGlv
biAgICAgICAgICAJMHg5MjE1ODhkYyAtW05TVGhyZWFkIG1haW5dICsgNDUKNyAgIGNvbS5hcHBs
ZS5Gb3VuZGF0aW9uICAgICAgICAgIAkweDkyMTU4ODhjIF9fTlNUaHJlYWRfX21haW5fXyArIDE0
OTkKOCAgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk3Yjg0YTE5IF9wdGhyZWFk
X3N0YXJ0ICsgMzQ1CjkgICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAgICAgICAJMHg5N2I4NDg5
ZSB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDQgQ3Jhc2hlZDogIFdlYkNvcmU6IFdvcmtlcgow
ICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAxZWYxMDAgSlNDOjpKU1ZhbHVl
Ojp0b1RoaXNPYmplY3RTbG93Q2FzZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0ICsgMzIyIChKU1Zh
bHVlLmNwcDo3OCkKMSAgIGNvbS5hcHBsZS5KYXZhU2NyaXB0Q29yZSAgICAgIAkweDAwMGYwZDRj
IEpTQzo6SlNWYWx1ZTo6dG9UaGlzT2JqZWN0KEpTQzo6RXhlY1N0YXRlKikgY29uc3QgKyA3NiAo
SlNDZWxsLmg6MzE4KQoyICAgY29tLmFwcGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAxY2Rh
ZjAgSlNDOjpKU0Z1bmN0aW9uOjpjYWxsKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBK
U0M6OkFyZ0xpc3QgY29uc3QmKSArIDE0MiAoSlNGdW5jdGlvbi5jcHA6MTIyKQozICAgY29tLmFw
cGxlLkphdmFTY3JpcHRDb3JlICAgICAgCTB4MDAxMTg2MWYgSlNDOjpjYWxsKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkNhbGxUeXBlLCBKU0M6OkNhbGxEYXRhIGNvbnN0Jiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OkFyZ0xpc3QgY29uc3QmKSArIDIxMSAoQ2FsbERhdGEuY3BwOjM5
KQo0ICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDBmMzgwMTUgV2ViQ29yZTo6
SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgV2ViQ29yZTo6RXZlbnQqKSArIDEwMzkgKEpTRXZlbnRMaXN0ZW5lci5jcHA6MTE1KQo1
ICAgY29tLmFwcGxlLldlYkNvcmUgICAgICAgICAgICAgCTB4MDBjYjgzYjAgV2ViQ29yZTo6RXZl
bnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhXZWJDb3JlOjpFdmVudCosIFdlYkNvcmU6OkV2
ZW50VGFyZ2V0RGF0YSosIFdURjo6VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLCAxdWw+JikgKyAzMDggKEV2ZW50VGFyZ2V0LmNwcDozMDEpCjYgICBjb20uYXBwbGUuV2Vi
Q29yZSAgICAgICAgICAgICAJMHgwMGNiOGE2YyBXZWJDb3JlOjpFdmVudFRhcmdldDo6ZmlyZUV2
ZW50TGlzdGVuZXJzKFdlYkNvcmU6OkV2ZW50KikgKyAzNzIgKEV2ZW50VGFyZ2V0LmNwcDoyODEp
CjcgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMGNiOGJmYyBXZWJDb3JlOjpF
dmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RXZlbnQ+
KSArIDE0NCAoRXZlbnRUYXJnZXQuY3BwOjI2MikKOCAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAg
ICAgICAgIAkweDAxNTI4ZWZmIFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6cGVy
Zm9ybVRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopICsgNDEzIChXb3JrZXJN
ZXNzYWdpbmdQcm94eS5jcHA6NjcpCjkgICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJ
MHgwMTUyOTdlMyBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgKyAxMTUgKFdvcmtlclJ1bkxvb3AuY3BwOjE5
OSkKMTAgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxNTI5YjBlIFdlYkNvcmU6
OldvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXZWJDb3JlOjpXb3JrZXJDb250ZXh0KiwgV2ViQ29y
ZTo6TW9kZVByZWRpY2F0ZSBjb25zdCYpICsgNDY4IChXb3JrZXJSdW5Mb29wLmNwcDoxNjMpCjEx
ICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMTUyOWMxNCBXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wOjpydW4oV2ViQ29yZTo6V29ya2VyQ29udGV4dCopICsgOTIgKFdvcmtlclJ1bkxv
b3AuY3BwOjEzMykKMTIgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAgIAkweDAxNTJkNjFh
IFdlYkNvcmU6OldvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCkgKyA0MCAoV29ya2VyVGhyZWFk
LmNwcDoxNTUpCjEzICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAgICAJMHgwMGJhYzIwOCBX
ZWJDb3JlOjpEZWRpY2F0ZWRXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpICsgNzQgKERlZGlj
YXRlZFdvcmtlclRocmVhZC5jcHA6NjcpCjE0ICBjb20uYXBwbGUuV2ViQ29yZSAgICAgICAgICAg
ICAJMHgwMTUyZGU1ZSBXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpICsgMzky
IChXb3JrZXJUaHJlYWQuY3BwOjEzNykKMTUgIGNvbS5hcHBsZS5XZWJDb3JlICAgICAgICAgICAg
IAkweDAxNTJkZjA5IFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQodm9p
ZCopICsgMTcgKFdvcmtlclRocmVhZC5jcHA6MTEzKQoxNiAgY29tLmFwcGxlLkphdmFTY3JpcHRD
b3JlICAgICAgCTB4MDAyNWQ3NWMgV1RGOjp0aHJlYWRFbnRyeVBvaW50KHZvaWQqKSArIDEyMCAo
VGhyZWFkaW5nLmNwcDo2NikKMTcgIGxpYlN5c3RlbS5CLmR5bGliICAgICAgICAgICAgIAkweDk3
Yjg0YTE5IF9wdGhyZWFkX3N0YXJ0ICsgMzQ1CjE4ICBsaWJTeXN0ZW0uQi5keWxpYiAgICAgICAg
ICAgICAJMHg5N2I4NDg5ZSB0aHJlYWRfc3RhcnQgKyAzNAoKVGhyZWFkIDQgY3Jhc2hlZCB3aXRo
IFg4NiBUaHJlYWQgU3RhdGUgKDMyLWJpdCk6CiAgZWF4OiAweGJiYWRiZWVmICBlYng6IDB4MDAx
ZWVmY2EgIGVjeDogMHhiMDMyYThjYyAgZWR4OiAweDk3YjU3MzEyCiAgZWRpOiAweDA1MjkyZmMw
ICBlc2k6IDB4MDU4NDJjMTQgIGVicDogMHhiMDMyYTlmOCAgZXNwOiAweGIwMzJhOWQwCiAgIHNz
OiAweDAwMDAwMDFmICBlZmw6IDB4MDAwMTAyODIgIGVpcDogMHgwMDFlZjEwMCAgIGNzOiAweDAw
MDAwMDE3CiAgIGRzOiAweDAwMDAwMDFmICAgZXM6IDB4MDAwMDAwMWYgICBmczogMHgwMDAwMDAx
ZiAgIGdzOiAweDAwMDAwMDM3CiAgY3IyOiAweGJiYWRiZWVmCgpCaW5hcnkgSW1hZ2VzOgogICAg
MHgxMDAwIC0gICAgMHg0OWZmNyArRHVtcFJlbmRlclRyZWUgPz8/ICg/Pz8pIDxCOEM5ODg4QS0x
RjA5LTMyNEEtODQzNy0yQTdFOTRFMTZCOEU+IC9TdHVmZi9Qcm9qZWN0cy9idWlsZC9EZWJ1Zy9E
dW1wUmVuZGVyVHJlZQogICAweGUyMDAwIC0gICAweDJmYWZmNyAgY29tLmFwcGxlLkphdmFTY3Jp
cHRDb3JlIDUzMysgKDUzMy42KykgPEQ0NDAwMjUxLTEyMzUtQ0Y2OC02QjcwLUVGM0YxNENBMzY5
MT4gL1N0dWZmL1Byb2plY3RzL2J1aWxkL0RlYnVnL0phdmFTY3JpcHRDb3JlLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0phdmFTY3JpcHRDb3JlCiAgMHg2NTAwMDAgLSAgIDB4N2M1ZmY3ICBjb20uYXBw
bGUuV2ViS2l0IDUzMysgKDUzMy42KykgPEZBNkI5ODc2LThCNkYtQTg4NC02NUUzLUIzMDMzQzVC
QTE0Mz4gL1N0dWZmL1Byb2plY3RzL2J1aWxkL0RlYnVnL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lv
bnMvQS9XZWJLaXQKICAweDlhYjAwMCAtICAweDFmNTZmZjcgIGNvbS5hcHBsZS5XZWJDb3JlIDUz
MysgKDUzMy42KykgPEYzQzc3NTU2LTA4QTUtNDE2Ri1EMjMzLTA1MzgzNUU3RkExMT4gL1N0dWZm
L1Byb2plY3RzL2J1aWxkL0RlYnVnL1dlYkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29y
ZQogMHg1NDNiMDAwIC0gIDB4NTQzYmZmNyAgY29tLmFwcGxlLkphdmFQbHVnaW5Db2NvYSAxMy4x
LjAgKDEzLjEuMCkgPEMyQzhCMzg1LURCNDQtMUQ1RS01MjIxLTlFRDFCQTQzOTMwQj4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvSmF2YVZNLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNl
cy9KYXZhUGx1Z2luQ29jb2EuYnVuZGxlL0NvbnRlbnRzL01hY09TL0phdmFQbHVnaW5Db2NvYQog
MHg1NDg1MDAwIC0gIDB4NTQ4Y2ZmNyAgY29tLmFwcGxlLkphdmFWTSAxMy4xLjAgKDEzLjEuMCkg
PDI4NDJDNEVFLTg2OUQtODFFNi1FNzcxLTA2MkY1ODNBMTA0ND4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvSmF2YVZNLmZyYW1ld29yay9WZXJzaW9ucy9BL0phdmFWTQoweDhmZTAwMDAwIC0g
MHg4ZmU0MTYyYiAgZHlsZCAxMzIuMSAoPz8/KSA8MjExQUYwREQtNDJEOS03OUM4LUJCNkEtMUY0
QkVFRjRCNEFCPiAvdXNyL2xpYi9keWxkCjB4OTAwMDMwMDAgLSAweDkwMDcyZmY3ICBsaWJ2TWlz
Yy5keWxpYiAyNjguMC4xIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8MkZDMjE3OEYtRkVGOS02RTNG
LTMyODktQTYzMDdCMUExNTRDPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRl
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9u
cy9BL2xpYnZNaXNjLmR5bGliCjB4OTAyMDQwMDAgLSAweDkwMjA0ZmY3ICBjb20uYXBwbGUuQ2Fy
Ym9uIDE1MCAoMTUyKSA8NjA4QTA0QUItRjM1RC1EMkVCLTY2MjktMTZCODhGQjMyMDc0PiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ2FyYm9u
CjB4OTAyMDUwMDAgLSAweDkwMjE1ZmY3ICBsaWJzYXNsMi4yLmR5bGliIDMuMTUuMCAoY29tcGF0
aWJpbGl0eSAzLjAuMCkgPEM4NzQ0RUEzLTBBQjctQ0QwMy1FNjM5LUM0RjJCOTEwQkU1RD4gL3Vz
ci9saWIvbGlic2FzbDIuMi5keWxpYgoweDkwMjE2MDAwIC0gMHg5MDI5OGZmYiAgU2VjdXJpdHlG
b3VuZGF0aW9uIDM2ODQwLjAuMCAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDI5QzI3RTBFLUIyQjMt
QkY2Qi1CMUY4LTU3ODNCOEIwMTUzNT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJp
dHlGb3VuZGF0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9BL1NlY3VyaXR5Rm91bmRhdGlvbgoweDkw
Mjk5MDAwIC0gMHg5MDNhNWZmNyAgbGliR0xQcm9ncmFtbWFiaWxpdHkuZHlsaWIgPz8/ICg/Pz8p
IDxDQTBBOTc1Qi0yQkVFLTQ0RTctQ0ZBNi04MTA1Q0ZFNkZFMDA+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xQcm9n
cmFtbWFiaWxpdHkuZHlsaWIKMHg5MDNhNjAwMCAtIDB4OTAzYjFmZjcgIGxpYkNTeW5jLkEuZHls
aWIgNTQzLjMzLjAgKGNvbXBhdGliaWxpdHkgNjQuMC4wKSA8RjkxNEY0MjctOThFQS05OEJDLTky
M0QtNDcyNzRBOTBENDQxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNl
cnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZUdyYXBoaWNzLmZyYW1l
d29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJDU3luYy5BLmR5bGliCjB4OTAzZWYwMDAgLSAw
eDkwM2VmZmY3ICBjb20uYXBwbGUuQXBwbGljYXRpb25TZXJ2aWNlcyAzOCAoMzgpIDw4MDEyQjUw
NC0zRDgzLUJGQkItREE2NS0wNjVFMDYxQ0ZFMDM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQXBwbGljYXRpb25TZXJ2
aWNlcwoweDkwM2YwMDAwIC0gMHg5MDc1N2ZmNyAgY29tLmFwcGxlLlF1YXJ0ekNvcmUgMS42LjEg
KDIyNy4xOCkgPDhBNjVGMjMzLTRDNzctQkE3Qy01RERBLTI0MjNGNUMxQjdBMT4gL1N5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9RdWFydHpD
b3JlCjB4OTA4YmUwMDAgLSAweDkwYmUyZmVmICBjb20uYXBwbGUuSElUb29sYm94IDEuNi4yICg/
Pz8pIDxGNUY5OUU3OC01Mzc3LURENTQtNjEzOC05RkM4NDQ2N0Y5Mzg+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0hJVG9v
bGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9ISVRvb2xib3gKMHg5MGJlMzAwMCAtIDB4OTBiZTlm
ZmYgIGNvbS5hcHBsZS5Db21tb25QYW5lbHMgMS4yLjQgKDkxKSA8MjQzOEFGNUQtMDY3Qi1COUZE
LTEyNDgtMkM5OTg3RjM2MEJBPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJh
bWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db21tb25QYW5lbHMuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvQ29tbW9uUGFuZWxzCjB4OTEwMWYwMDAgLSAweDkxMGQ1ZmZmICBsaWJGb250UGFyc2Vy
LmR5bGliID8/PyAoPz8/KSA8NTkzNUUxMDUtMUU0NS04ODZDLTY0MjAtQzFDQ0E4ODZDMzc1PiAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0ZyYW1ld29ya3MvQVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9s
aWJGb250UGFyc2VyLmR5bGliCjB4OTE3OTYwMDAgLSAweDkxN2U2ZmY3ICBjb20uYXBwbGUuZnJh
bWV3b3JrLmZhbWlseWNvbnRyb2xzIDIuMC4xICgyMDEwKSA8NTBFNzQ5MTYtMTlBNS1GMkZDLUFC
NTctNzZGMkM4RERGMEE3PiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvRmFtaWx5
Q29udHJvbHMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRmFtaWx5Q29udHJvbHMKMHg5MTdmYjAwMCAt
IDB4OTE4NTZmZjcgIGNvbS5hcHBsZS5mcmFtZXdvcmsuSU9LaXQgMi4wICg/Pz8pIDw2OUU0RkU5
My0zNzZDLTU2NUUtNjUwRi0wNEZBRDIxM0FBMjQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0lPS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0lPS2l0CjB4OTE5OGYwMDAgLSAweDkxYTM3ZmZi
ICBjb20uYXBwbGUuUUQgMy4zNSAoPz8/KSA8QjgwQjY0QkMtOTU4Qi1EQTlFLTUwRjktRDdFODMz
M0NDNUEyPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvUUQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUUQK
MHg5MWE4MTAwMCAtIDB4OTFhODFmZjcgIGNvbS5hcHBsZS5Db3JlU2VydmljZXMgNDQgKDQ0KSA8
QUMzNUQxMTItNUZCOS05QzhDLTYxODktNUY1OTQ1MDcyMzc1PiAvU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29yZVNlcnZpY2VzCjB4
OTFhODIwMDAgLSAweDkxYWI1ZmY3ICBjb20uYXBwbGUuQUUgNDk2LjQgKDQ5Ni40KSA8N0YzNEVD
NDctODQyOS0zMDc3LTgxNTgtNTRGNUVBOTA4QzY2PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9BRS5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9BRQoweDkxYWI2MDAwIC0gMHg5MWI5MWZlNyAgY29tLmFwcGxlLkRlc2t0
b3BTZXJ2aWNlcyAxLjUuNSAoMS41LjUpIDxFQ0VERkRGMi1DNDBFLThERjAtRjhGQy0yNDlDQ0E3
NjJFNjI+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9EZXNrdG9wU2VydmljZXNQ
cml2LmZyYW1ld29yay9WZXJzaW9ucy9BL0Rlc2t0b3BTZXJ2aWNlc1ByaXYKMHg5MWI5NzAwMCAt
IDB4OTFiYjNmZTMgIGNvbS5hcHBsZS5vcGVuc2NyaXB0aW5nIDEuMy4xICg/Pz8pIDxEQTE2REU0
OC01OUY0LUM5NEItRUJFMy03RkFGNzcyMjExQTI+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL09wZW5TY3JpcHRpbmcuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvT3BlblNjcmlwdGluZwoweDkxYmI0MDAwIC0gMHg5MWZjYWZmNyAg
bGliQkxBUy5keWxpYiAyMTkuMC4wIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8QzRGQjMwM0EtREI0
RC1GOUU4LTE4MUMtMTI5NTg1RTU5NjAzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2Nl
bGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9W
ZXJzaW9ucy9BL2xpYkJMQVMuZHlsaWIKMHg5MjAwYjAwMCAtIDB4OTIwMGJmZjcgIGNvbS5hcHBs
ZS5BY2NlbGVyYXRlIDEuNiAoQWNjZWxlcmF0ZSAxLjYpIDxCQzUwMUM5Ri03QzIwLTk2MUEtQjEz
NS0wQTQ1NzY2N0QwM0M+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJhdGUuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvQWNjZWxlcmF0ZQoweDkyMDBjMDAwIC0gMHg5MjEzYWZlNyAgY29t
LmFwcGxlLkNvcmVEYXRhIDEwMi4xICgyNTEpIDxFNkE0NTdGMC1BMEEzLTMyQ0QtNkM2OS02Mjg2
RTdDMEYwNjM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVEYXRhLmZyYW1ld29yay9W
ZXJzaW9ucy9BL0NvcmVEYXRhCjB4OTIxNDIwMDAgLSAweDkyM2IyZmZiICBjb20uYXBwbGUuRm91
bmRhdGlvbiA2LjYuMiAoNzUxLjIxKSA8REE3QTE3M0EtNDQzNS1FQ0Q2LUY0QUYtOTc3RDcyMkZE
MkY3PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yay9WZXJz
aW9ucy9DL0ZvdW5kYXRpb24KMHg5MjNiMzAwMCAtIDB4OTI3MTFmZmYgIGNvbS5hcHBsZS5SYXdD
YW1lcmEuYnVuZGxlIDMuMC4xICg1MjMpIDxCQjIwQzRDOC1BQ0VFLTdCNDAtQzFBMC00QkY0RUM2
Qjg3OTY+IC9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvUmF3Q2FtZXJhLmJ1bmRsZS9Db250
ZW50cy9NYWNPUy9SYXdDYW1lcmEKMHg5MjcxMjAwMCAtIDB4OTI3Y2JmZTcgIGxpYnNxbGl0ZTMu
ZHlsaWIgOS42LjAgKGNvbXBhdGliaWxpdHkgOS4wLjApIDwxNkNFRjhFOC04QzlBLTk0Q0QtRUY1
RC0wNTQ3Nzg0NEMwMDU+IC91c3IvbGliL2xpYnNxbGl0ZTMuZHlsaWIKMHg5MjdjYzAwMCAtIDB4
OTI3ZGVmZjcgIGNvbS5hcHBsZS5NdWx0aXRvdWNoU3VwcG9ydC5mcmFtZXdvcmsgMjA0LjEyLjEg
KDIwNC4xMi4xKSA8NkJCNThFOTAtMjFGQS1DNDkxLUYwRTQtNTRCNjlDQ0RCQkMwPiAvU3lzdGVt
L0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3MvTXVsdGl0b3VjaFN1cHBvcnQuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvTXVsdGl0b3VjaFN1cHBvcnQKMHg5MjdkZjAwMCAtIDB4OTI5NThmZmIgIGNvbS5h
cHBsZS5Db3JlRm91bmRhdGlvbiA2LjYuMSAoNTUwLjE5KSA8MUU5N0ZCMUUtOUU0Mi1COEVCLUU0
NjMtNUM3NTMxNUZEQTMxPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlv
bi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlRm91bmRhdGlvbgoweDkyYTA2MDAwIC0gMHg5MmE1
N2ZmNyAgY29tLmFwcGxlLkhJU2VydmljZXMgMS44LjAgKD8/PykgPDEwQzg1Qjg4LUM2QUYtOTFE
Qi0yNTQ2LTM0NjYxQkEzNUFDNT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0hJU2VydmljZXMuZnJh
bWV3b3JrL1ZlcnNpb25zL0EvSElTZXJ2aWNlcwoweDkyYTk3MDAwIC0gMHg5MmFkYmZmMyAgY29t
LmFwcGxlLmNvcmV1aSAyICgxMTQpIDwyOUY4RjFBNC0xQzk2LTZBMEYtNENDMi05Qjg1Q0Y4MzIw
OUY+IC9TeXN0ZW0vTGlicmFyeS9Qcml2YXRlRnJhbWV3b3Jrcy9Db3JlVUkuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvQ29yZVVJCjB4OTJhZGMwMDAgLSAweDkyYzk4ZmYzICBjb20uYXBwbGUuSW1hZ2VJ
Ty5mcmFtZXdvcmsgMy4wLjIgKDMuMC4xKSA8Q0IzOUIwNjctNThCOC03MERCLTNFNDAtMTYwNjA0
NjY0QTZEPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZy
YW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvSW1hZ2VJTy5mcmFtZXdvcmsvVmVyc2lvbnMv
QS9JbWFnZUlPCjB4OTJjOTkwMDAgLSAweDkyYzlkZmY3ICBJT1N1cmZhY2UgPz8/ICg/Pz8pIDw0
QjgyNUFEQS04REJFLTZCQTItMUFCMy0zMDdEMkMzQUZDQTg+IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9JT1N1cmZhY2UKMHg5MmNkMjAw
MCAtIDB4OTJkOWNmZWYgIGNvbS5hcHBsZS5Db3JlU2VydmljZXMuT1NTZXJ2aWNlcyAzNTcgKDM1
NykgPDc2NDg3MkMzLUFFMzAtN0Y1NC00OTRELTRCQTNDRTRGNERGQj4gL1N5c3RlbS9MaWJyYXJ5
L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3Mv
T1NTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PU1NlcnZpY2VzCjB4OTJkOWQwMDAgLSAw
eDkyZGFiZmY3ICBjb20uYXBwbGUub3BlbmdsIDEuNi43ICgxLjYuNykgPDNDNTI5NzkwLURFRTkt
QUMyNy1BODc5LTgwNkU0QzIzMzIzQz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdM
LmZyYW1ld29yay9WZXJzaW9ucy9BL09wZW5HTAoweDkyZGRmMDAwIC0gMHg5MmRlMmZmNyAgbGli
Q0dYVHlwZS5BLmR5bGliIDU0My4zMy4wIChjb21wYXRpYmlsaXR5IDY0LjAuMCkgPDY5QkU1NzhD
LUEzNjQtQTE1MC0zNUUzLTUzRUUwMEY1NkYwNT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
QXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NvcmVH
cmFwaGljcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9SZXNvdXJjZXMvbGliQ0dYVHlwZS5BLmR5bGli
CjB4OTJmZTgwMDAgLSAweDkzMDA5ZmU3ICBjb20uYXBwbGUub3BlbmNsIDEyLjEgKDEyLjEpIDwx
QkNBNEY2MC1FNjEyLTVDMUItRUY1MC1BODEwRDcwQ0RGMDU+IC9TeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL09wZW5DTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9PcGVuQ0wKMHg5MzAwYTAwMCAtIDB4
OTMwMWVmZTcgIGxpYmJzbS4wLmR5bGliID8/PyAoPz8/KSA8MTRDQjA1M0EtN0M0Ny05NkRBLUU0
MTUtMDkwNkJBMUI3OEM5PiAvdXNyL2xpYi9saWJic20uMC5keWxpYgoweDkzMDFmMDAwIC0gMHg5
MzAyOWZmYiAgY29tLmFwcGxlLnNwZWVjaC5yZWNvZ25pdGlvbi5mcmFtZXdvcmsgMy4xMS4xICgz
LjExLjEpIDxFQzBFNjlDOC1BMTIxLTcwRTgtNDNDRi1FNkZDNEM3Nzc5RUM+IC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1Nw
ZWVjaFJlY29nbml0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9BL1NwZWVjaFJlY29nbml0aW9uCjB4
OTMwMmEwMDAgLSAweDkzNDVmZmY3ICBsaWJMQVBBQ0suZHlsaWIgMjE5LjAuMCAoY29tcGF0aWJp
bGl0eSAxLjAuMCkgPDVFMkQyMjgzLTU3REUtOUE0OS0xREIwLUNEMDI3RkVGQTZDMj4gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQWNjZWxlcmF0ZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFt
ZXdvcmtzL3ZlY0xpYi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9saWJMQVBBQ0suZHlsaWIKMHg5MzQ2
NzAwMCAtIDB4OTNjNTY1MzcgIGNvbS5hcHBsZS5Db3JlR3JhcGhpY3MgMS41NDMuMzMgKD8/Pykg
PEM1N0UyOTY0LTgwQUYtNjM0Ni02RDNFLTIzQUVEOUQyNjk3Nz4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdv
cmtzL0NvcmVHcmFwaGljcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlR3JhcGhpY3MKMHg5M2M1
NzAwMCAtIDB4OTNjZTlmZTMgIGNvbS5hcHBsZS5wcmludC5mcmFtZXdvcmsuUHJpbnRDb3JlIDYu
MiAoMzEyLjUpIDw3NzI5QjRENy1ENjYxLUQ2NjktRkE3RS01MTBGOTNGNjg1QTY+IC9TeXN0ZW0v
TGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvRnJhbWV3b3Jrcy9QcmludENvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUHJpbnRDb3JlCjB4
OTNkNmIwMDAgLSAweDkzZDZiZmY3ICBjb20uYXBwbGUudmVjTGliIDMuNiAodmVjTGliIDMuNikg
PDczNjIwNzdBLTg5MEYtM0FFRi1BOEFCLTIyMjQ3QjEwRTEwNj4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9ucy9BL3ZlY0xpYgoweDkzZDZjMDAwIC0g
MHg5M2UxNWZmNyAgY29tLmFwcGxlLkNGTmV0d29yayA0NTQuOS40ICg0NTQuOS40KSA8MkY4QjVC
QTUtMDk5Ri02Q0RBLUY1MDAtNENBMTg4QkJDREJDPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9DRk5ldHdvcmsu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ0ZOZXR3b3JrCjB4OTNlZjUwMDAgLSAweDkzZjMwZmViICBs
aWJGb250UmVnaXN0cnkuZHlsaWIgPz8/ICg/Pz8pIDxGNTBBNjBFMS0zNzU3LUQwMDctQTIwRC1B
NTUwNEMxNzMzNEM+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2Vydmlj
ZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9BVFMuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvUmVzb3VyY2VzL2xpYkZvbnRSZWdpc3RyeS5keWxpYgoweDkzZjMxMDAwIC0gMHg5M2YzMmZm
NyAgY29tLmFwcGxlLmF1ZGlvLnVuaXRzLkF1ZGlvVW5pdCAxLjYuMyAoMS42LjMpIDw5NTlERkZB
RS1BMDZCLTdGRjYtQjcxMy1CMjA3Njg5M0VCQkQ+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0F1ZGlvVW5pdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BdWRpb1VuaXQKMHg5M2YzMzAwMCAtIDB4
OTNmY2JmZTcgIGVkdS5taXQuS2VyYmVyb3MgNi41LjkgKDYuNS45KSA8NzNFQzg0N0YtRkY0NC1E
NTQyLTJBRDUtOTdGNkM4RDQ4RjBCPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9LZXJiZXJv
cy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9LZXJiZXJvcwoweDkzZmNjMDAwIC0gMHg5NDA2OWZlMyAg
Y29tLmFwcGxlLkxhdW5jaFNlcnZpY2VzIDM2Mi4xICgzNjIuMSkgPDg4NUQ4NTY3LTlFNDAtMDEw
NS0yMEJDLTQyQzdGRjY1NzU4Mz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZp
Y2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvTGF1bmNoU2VydmljZXMuZnJhbWV3
b3JrL1ZlcnNpb25zL0EvTGF1bmNoU2VydmljZXMKMHg5NDA3NTAwMCAtIDB4OTQwYWFmZjcgIGxp
YmN1cHMuMi5keWxpYiAyLjguMCAoY29tcGF0aWJpbGl0eSAyLjAuMCkgPDQ1OEU4MTlBLTRFM0Yt
MzMzRS0yOENFLTY3MTI4MUIzMThEMz4gL3Vzci9saWIvbGliY3Vwcy4yLmR5bGliCjB4OTQ2MWUw
MDAgLSAweDk0Njk4ZmVmICBjb20uYXBwbGUuYXVkaW8uQ29yZUF1ZGlvIDMuMi4yICgzLjIuMikg
PDFGOTdCNDhBLTMyN0ItODlDQy03QzAxLTM4NjUxNzk3MTZFMD4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQ29yZUF1ZGlvLmZyYW1ld29yay9WZXJzaW9ucy9BL0NvcmVBdWRpbwoweDk0OWEw
MDAwIC0gMHg5NDlhMGZmNyAgY29tLmFwcGxlLkNvY29hIDYuNiAoPz8/KSA8RUEyN0I0MjgtNTkw
NC1CMDBCLTM5N0EtMTg1NTg4Njk4QkNDPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2Nv
YS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db2NvYQoweDk0OWEzMDAwIC0gMHg5NDljYmZmNyAgbGli
eHNsdC4xLmR5bGliIDMuMjQuMCAoY29tcGF0aWJpbGl0eSAzLjAuMCkgPDc2OUVGNEIyLUMxQUQt
NzNENS1BQUFELTE1NjREQUVBNzdBRj4gL3Vzci9saWIvbGlieHNsdC4xLmR5bGliCjB4OTQ5Y2Mw
MDAgLSAweDk0YTc5ZmU3ICBsaWJvYmpjLkEuZHlsaWIgMjI3LjAuMCAoY29tcGF0aWJpbGl0eSAx
LjAuMCkgPERGOEU0Q0ZBLTM3MTktMzQxNS0wQkYxLUU4QzVFNTYxQzNCMT4gL3Vzci9saWIvbGli
b2JqYy5BLmR5bGliCjB4OTRhYzEwMDAgLSAweDk0YWUzZmVmICBjb20uYXBwbGUuRGlyZWN0b3J5
U2VydmljZS5GcmFtZXdvcmsgMy42ICg2MjEuMykgPDA1RkZEQkRCLUYxNkItOEFDMC1EQjQyLTk4
Njk2NUZDQkQ5NT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRGlyZWN0b3J5U2VydmljZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9EaXJlY3RvcnlTZXJ2aWNlCjB4OTRhZTQwMDAgLSAweDk0YmU1
ZmU3ICBsaWJ4bWwyLjIuZHlsaWIgMTAuMy4wIChjb21wYXRpYmlsaXR5IDEwLjAuMCkgPEI0QzVD
RDY4LTQwNUQtMEYxQi01OUNBLTUxOTNENDYzRDBFRj4gL3Vzci9saWIvbGlieG1sMi4yLmR5bGli
CjB4OTRiZTYwMDAgLSAweDk0YzIzZmY3ICBjb20uYXBwbGUuU3lzdGVtQ29uZmlndXJhdGlvbiAx
LjEwLjIgKDEuMTAuMikgPDgzMEZFRDlFLTNFMjQtMDA0Qy0zNUQ1LTJDMTI3M0Y3OTczND4gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU3lzdGVtQ29uZmlndXJhdGlvbi5mcmFtZXdvcmsvVmVy
c2lvbnMvQS9TeXN0ZW1Db25maWd1cmF0aW9uCjB4OTRjN2YwMDAgLSAweDk0Y2MwZmY3ICBsaWJS
SVAuQS5keWxpYiA1NDMuMzMuMCAoY29tcGF0aWJpbGl0eSA2NC4wLjApIDxDNkU1MEM3RS1FQkVF
LTMyQUYtRkYwNy04RTMyNUUyMUE4Mzg+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxp
Y2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db3JlR3JhcGhp
Y3MuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlJJUC5BLmR5bGliCjB4OTRjYzEw
MDAgLSAweDk0Y2M0ZmZiICBjb20uYXBwbGUuaGVscCAxLjMuMSAoNDEpIDw2N0YxRjQyNC0zOTgz
LTdBMkEtRUMyMS04NjdCRTgzOEU5MEI+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJv
bi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0hlbHAuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvSGVscAoweDk0Y2M1MDAwIC0gMHg5NGNjN2ZmNyAgbGliUmFkaWFuY2UuZHlsaWIgPz8/ICg/
Pz8pIDw5MzU4RTFFRi1GODAyLUI3NkUtOEUyMy0yRDA2OTU3ODdDRkI+IC9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJh
bWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJSYWRpYW5j
ZS5keWxpYgoweDk0ZWNkMDAwIC0gMHg5NGYzMWZmYiAgY29tLmFwcGxlLmh0bWxyZW5kZXJpbmcg
NzIgKDEuMS40KSA8NEQ0NTFBMzUtRkFCNi0xMjg4LTcxRjYtRjI0QTRCNkUyMzcxPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jr
cy9IVE1MUmVuZGVyaW5nLmZyYW1ld29yay9WZXJzaW9ucy9BL0hUTUxSZW5kZXJpbmcKMHg5NWVj
NTAwMCAtIDB4OTVlZGFmZmYgIGNvbS5hcHBsZS5JbWFnZUNhcHR1cmUgNi4wICg2LjApIDwzRjMx
ODMzQS0zOEE5LTQ0NEUtMDJCNy0xNzYxOUNBNkYyQTA+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlQ2FwdHVyZS5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9JbWFnZUNhcHR1cmUKMHg5NWVkYjAwMCAtIDB4OTYwMDdmZmYg
IGNvbS5hcHBsZS5hdWRpby50b29sYm94LkF1ZGlvVG9vbGJveCAxLjYuMyAoMS42LjMpIDxGMEQ3
MjU2RS0wOTE0LThFNzctRTM3Qi05NzIwNDMwNDIyQUI+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0F1ZGlvVG9vbGJveC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BdWRpb1Rvb2xib3gKMHg5NjA0
YjAwMCAtIDB4OTYwNTlmZTcgIGxpYnouMS5keWxpYiAxLjIuMyAoY29tcGF0aWJpbGl0eSAxLjAu
MCkgPDgyQjJDMjU0LTZGOEQtN0JFQS00QzE4LTAzOEU5MENBRTE5Qj4gL3Vzci9saWIvbGliei4x
LmR5bGliCjB4OTYxMGIwMDAgLSAweDk2MTMxZmZmICBjb20uYXBwbGUuRGljdGlvbmFyeVNlcnZp
Y2VzIDEuMS4xICgxLjEuMSkgPDAyNzA5MjMwLTlCMzctQzc0My02RTI3LTNGQ0ZEMTgyMTFGOD4g
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9u
cy9BL0ZyYW1ld29ya3MvRGljdGlvbmFyeVNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0Rp
Y3Rpb25hcnlTZXJ2aWNlcwoweDk2MWE2MDAwIC0gMHg5NjFhOWZlNyAgbGlibWF0aENvbW1vbi5B
LmR5bGliIDMxNS4wLjAgKGNvbXBhdGliaWxpdHkgMS4wLjApIDwxNjIyQTU0Ri0xQTk4LTJDQkUt
QjZBNC0yMTIyOTgxQTUwMEU+IC91c3IvbGliL3N5c3RlbS9saWJtYXRoQ29tbW9uLkEuZHlsaWIK
MHg5NjFhYTAwMCAtIDB4OTYxYzhmZjcgIGNvbS5hcHBsZS5Db3JlVmlkZW8gMS42LjEgKDQ1LjQp
IDxFMERGMDQ0RC1CRjMxLTQyQ0UtQjY5MC1GRDFGQ0UwN0U2NEE+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVWaWRlby5mcmFtZXdvcmsvVmVyc2lvbnMvQS9Db3JlVmlkZW8KMHg5NjFm
NjAwMCAtIDB4OTY0NThmZjMgIGNvbS5hcHBsZS5zZWN1cml0eSA2LjEuMSAoMzc1OTQpIDwxQUMw
N0Y3NS03RTI3LTk2NjItMjFEQS1CMDVERkYwNDdCMjY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL1NlY3VyaXR5LmZyYW1ld29yay9WZXJzaW9ucy9BL1NlY3VyaXR5CjB4OTY2NGMwMDAgLSAw
eDk2NjRmZmY3ICBsaWJDb3JlVk1DbGllbnQuZHlsaWIgPz8/ICg/Pz8pIDw5OENCOTZCMS04NUZF
LTI1QUYtQUIxOS1FRDA2MTkxMkZDM0U+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5H
TC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliQ29yZVZNQ2xpZW50LmR5bGliCjB4
OTY2OGEwMDAgLSAweDk2NmNkZmY3ICBjb20uYXBwbGUuTmF2aWdhdGlvblNlcnZpY2VzIDMuNS40
ICgxODIpIDw3NTNCODkwNi0wNkMwLTNBRTAtM0Q2QS04RkY1QUMxOEVEMTI+IC9TeXN0ZW0vTGli
cmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL05h
dmlnYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9OYXZpZ2F0aW9uU2VydmljZXMK
MHg5NjZjZTAwMCAtIDB4OTY2ZmZmZjMgIGxpYlRydWVUeXBlU2NhbGVyLmR5bGliID8/PyAoPz8/
KSA8RjZBMzJDMDEtQ0Q4Mi01NEY2LTIxOEUtMDQwNkQ0MEQxRDlBPiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1l
d29ya3MvQVRTLmZyYW1ld29yay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJUcnVlVHlwZVNjYWxl
ci5keWxpYgoweDk2NzA0MDAwIC0gMHg5NjcyOGZmNyAgbGliSlBFRy5keWxpYiA/Pz8gKD8/Pykg
PEVEQTg2NzEyLUY0OUMtNzYwQy1CRTU1LTlCODk5QTRBNUQxQj4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdv
cmtzL0ltYWdlSU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYkpQRUcuZHlsaWIK
MHg5Njc4ZjAwMCAtIDB4OTY3OWFmZjcgIGxpYkdMLmR5bGliID8/PyAoPz8/KSA8RUFEODU0MDkt
OTAzNi04MzFCLUMzNzgtRTUwNzgwMzA1REE2PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9P
cGVuR0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTGlicmFyaWVzL2xpYkdMLmR5bGliCjB4OTZhNjYw
MDAgLSAweDk2ZDg2ZmViICBjb20uYXBwbGUuQ29yZVNlcnZpY2VzLkNhcmJvbkNvcmUgODYxLjYg
KDg2MS42KSA8RDNENUQ5RjEtMDFFRC1EQ0FELTZBQTktNEFCRTYwQzdBMTEyPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9Db3JlU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3
b3Jrcy9DYXJib25Db3JlLmZyYW1ld29yay9WZXJzaW9ucy9BL0NhcmJvbkNvcmUKMHg5NmQ4NzAw
MCAtIDB4OTZkYTJmZjcgIGxpYlBuZy5keWxpYiA/Pz8gKD8/PykgPDkyOUZFOEVFLTI3N0QtRjZF
Qi1ENjcyLUU2RjRDRUJGMTUwND4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRp
b25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0ltYWdlSU8uZnJhbWV3
b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlBuZy5keWxpYgoweDk2ZGEzMDAwIC0gMHg5NmRh
YWZmMyAgY29tLmFwcGxlLnByaW50LmZyYW1ld29yay5QcmludCA2LjEgKDIzNy4xKSA8OTdBQjcw
QjYtQzY1My0yMTJGLUNGRDMtRTM4MTZEMEY1QzIyPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9DYXJib24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9QcmludC5mcmFtZXdvcmsv
VmVyc2lvbnMvQS9QcmludAoweDk2ZGFiMDAwIC0gMHg5NmRhY2ZmNyAgY29tLmFwcGxlLlRydXN0
RXZhbHVhdGlvbkFnZW50IDEuMSAoMSkgPDZDMDRDNEM1LTY2N0UtMkVCRS1FQjk2LTVCNjdCRDRC
MjE4NT4gL1N5c3RlbS9MaWJyYXJ5L1ByaXZhdGVGcmFtZXdvcmtzL1RydXN0RXZhbHVhdGlvbkFn
ZW50LmZyYW1ld29yay9WZXJzaW9ucy9BL1RydXN0RXZhbHVhdGlvbkFnZW50CjB4OTZlMWMwMDAg
LSAweDk2ZTIwZmY3ICBsaWJHSUYuZHlsaWIgPz8/ICg/Pz8pIDwwMzg4MEJBMS03QTg2LTBGMkIt
NjE3QS1DNjZCMUQwNURENzA+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcGxpY2F0aW9u
U2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbWFnZUlPLmZyYW1ld29y
ay9WZXJzaW9ucy9BL1Jlc291cmNlcy9saWJHSUYuZHlsaWIKMHg5NmUyMTAwMCAtIDB4OTZlMmRm
ZjcgIGxpYmt4bGQuZHlsaWIgPz8/ICg/Pz8pIDwxM0YyNkJCNi1DMkY3LTlENzQtOTMzRS0wOUFE
OEI1MDlFQ0Q+IC91c3IvbGliL3N5c3RlbS9saWJreGxkLmR5bGliCjB4OTZlNDcwMDAgLSAweDk2
ZWY1ZmYzICBjb20uYXBwbGUuaW5rLmZyYW1ld29yayAxLjMuMyAoMTA3KSA8NTdCNTRGNkYtQ0Uz
NS1ENTQ2LUM3RUMtREJDNUZEQzc5OTM4PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9DYXJi
b24uZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9JbmsuZnJhbWV3b3JrL1ZlcnNpb25z
L0EvSW5rCjB4OTZmMzAwMDAgLSAweDk2ZjM1ZmY3ICBjb20uYXBwbGUuT3BlbkRpcmVjdG9yeSAx
MC42ICgxMC42KSA8OTI1ODI4MDctRThGMy0zREQ5LUVCNDItNDE5NUNGQjc1NEExPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuRGlyZWN0b3J5LmZyYW1ld29yay9WZXJzaW9ucy9BL09w
ZW5EaXJlY3RvcnkKMHg5NzJhMzAwMCAtIDB4OTcyZjBmZWIgIGNvbS5hcHBsZS5EaXJlY3RvcnlT
ZXJ2aWNlLlBhc3N3b3JkU2VydmVyRnJhbWV3b3JrIDYuMCAoNi4wKSA8QkY2NkJBNUQtQkJDOC03
OEE1LURCRTItRjlERTNERDFENzc1PiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1ld29ya3Mv
UGFzc3dvcmRTZXJ2ZXIuZnJhbWV3b3JrL1ZlcnNpb25zL0EvUGFzc3dvcmRTZXJ2ZXIKMHg5NzJm
MTAwMCAtIDB4OTczNWJmZTcgIGxpYnN0ZGMrKy42LmR5bGliIDcuOS4wIChjb21wYXRpYmlsaXR5
IDcuMC4wKSA8NDExRDg3RjQtQjdFMS00NEVCLUYyMDEtRjhCNEY5MjI3MjEzPiAvdXNyL2xpYi9s
aWJzdGRjKysuNi5keWxpYgoweDk3MzZhMDAwIC0gMHg5NzM4YWZlNyAgbGlicmVzb2x2LjkuZHls
aWIgNDAuMC4wIChjb21wYXRpYmlsaXR5IDEuMC4wKSA8MDMwMTlERDctOTkzRC1BQzg4LTY2MzYt
MTc5RjkyRjMxNUM0PiAvdXNyL2xpYi9saWJyZXNvbHYuOS5keWxpYgoweDk3MzhiMDAwIC0gMHg5
NzNkMWZmNyAgbGliYXV0by5keWxpYiA/Pz8gKD8/PykgPDg1NjcwQTY0LTNCNjctODE2Mi1ENDQx
LUQ4RTBCRTE1Q0E5ND4gL3Vzci9saWIvbGliYXV0by5keWxpYgoweDk3M2RlMDAwIC0gMHg5NzNl
OGZlNyAgY29tLmFwcGxlLmF1ZGlvLlNvdW5kTWFuYWdlciAzLjkuMyAoMy45LjMpIDw1RjQ5NDk1
NS03MjkwLTJEOTEtREE5NC00NEI1OTAxOTE3NzE+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NhcmJvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NhcmJvblNvdW5kLmZyYW1l
d29yay9WZXJzaW9ucy9BL0NhcmJvblNvdW5kCjB4OTc0MzMwMDAgLSAweDk3NDQ0ZmY3ICBjb20u
YXBwbGUuTGFuZ0FuYWx5c2lzIDEuNi42ICgxLjYuNikgPDdBMzg2MkY3LTM3MzAtOEY2RS1BNURF
LThFMkNDRUE5NzlFRj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwbGljYXRpb25TZXJ2
aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0xhbmdBbmFseXNpcy5mcmFtZXdv
cmsvVmVyc2lvbnMvQS9MYW5nQW5hbHlzaXMKMHg5NzczZjAwMCAtIDB4OTc3M2ZmZjcgIGNvbS5h
cHBsZS5BY2NlbGVyYXRlLnZlY0xpYiAzLjYgKHZlY0xpYiAzLjYpIDwxREVDNjM5Qy0xNzNELUY4
MDgtREUwRC00MDcwQ0M2RjVCQzc+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FjY2VsZXJh
dGUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy92ZWNMaWIuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvdmVjTGliCjB4OTc3ZmEwMDAgLSAweDk3ODA3ZmY3ICBjb20uYXBwbGUuTmV0RlMgMy4y
LjEgKDMuMi4xKSA8NUU2MUEwMEItRkExNi05RDk5LUEwNjQtNDdCREM1QkM5QTJCPiAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9OZXRGUy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9OZXRGUwoweDk3
ODA4MDAwIC0gMHg5NzgxMWZmNyAgY29tLmFwcGxlLkRpc2tBcmJpdHJhdGlvbiAyLjMgKDIuMykg
PEU5QzQwNzY3LURBNkEtNkNDQi04QjAwLTJENTcwNjc1MzAwMD4gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRGlza0FyYml0cmF0aW9uLmZyYW1ld29yay9WZXJzaW9ucy9BL0Rpc2tBcmJpdHJh
dGlvbgoweDk3ODEyMDAwIC0gMHg5Nzg1YmZlNyAgbGliVElGRi5keWxpYiA/Pz8gKD8/PykgPEU0
NUIxNjlFLTI1M0UtRTg2NS0xNTAxLTk3Nzc3RDI3MDJGMj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0ltYWdlSU8uZnJhbWV3b3JrL1ZlcnNpb25zL0EvUmVzb3VyY2VzL2xpYlRJRkYuZHlsaWIKMHg5
Nzg1YzAwMCAtIDB4OTc4OGRmZjcgIGxpYkdMSW1hZ2UuZHlsaWIgPz8/ICg/Pz8pIDxBRjExMDg5
Mi1CMTBBLTVCNjEtRjg5OC0yMUZCMkJDRTYzQkY+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L09wZW5HTC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9MaWJyYXJpZXMvbGliR0xJbWFnZS5keWxpYgow
eDk3YWMxMDAwIC0gMHg5N2I0MWZlYiAgY29tLmFwcGxlLlNlYXJjaEtpdCAxLjMuMCAoMS4zLjAp
IDw5RTE4QUVBNS1GNEI0LThCRTUtRUVBOS04MThGQzRGNDZGRDk+IC9TeXN0ZW0vTGlicmFyeS9G
cmFtZXdvcmtzL0NvcmVTZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1Nl
YXJjaEtpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9TZWFyY2hLaXQKMHg5N2I0MjAwMCAtIDB4OTdi
NDRmZjcgIGNvbS5hcHBsZS5zZWN1cml0eWhpIDQuMCAoMzY2MzgpIDw5NjJDNjZGQi01QkU5LTYz
NEUtMDgxMC0wMzZDQjM0MEMwNTk+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NhcmJvbi5m
cmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL1NlY3VyaXR5SEkuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvU2VjdXJpdHlISQoweDk3YjU2MDAwIC0gMHg5N2NmYmZlYiAgbGliU3lzdGVtLkIuZHls
aWIgMTI1LjAuMSAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDA2QTUzMzZBLUE2RjYtNEU2Mi1GNTVG
LTQ5MDlBNjQ2MzFDMj4gL3Vzci9saWIvbGliU3lzdGVtLkIuZHlsaWIKMHg5N2QzZDAwMCAtIDB4
OTdkNTVmZjcgIGNvbS5hcHBsZS5DRk9wZW5EaXJlY3RvcnkgMTAuNiAoMTAuNikgPDE1MzdGQjRG
LUMxMTItNUQxMi0xRTVELTNCMTAwMkE0MDM4Rj4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mv
T3BlbkRpcmVjdG9yeS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzL0NGT3BlbkRpcmVj
dG9yeS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9DRk9wZW5EaXJlY3RvcnkKMHg5N2Q4ZDAwMCAtIDB4
OTdlMjhmZjcgIGNvbS5hcHBsZS5BcHBsaWNhdGlvblNlcnZpY2VzLkFUUyA0LjIgKD8/PykgPDNC
RUI3MjEwLTRDODUtNzMwOS1CMjJELTY5NTc2NTUyNjUyND4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvQXBwbGljYXRpb25TZXJ2aWNlcy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtz
L0FUUy5mcmFtZXdvcmsvVmVyc2lvbnMvQS9BVFMKMHg5N2UyOTAwMCAtIDB4OTdlNmNmZjcgIGxp
YkdMVS5keWxpYiA/Pz8gKD8/PykgPENFMDI5NjhFLTkzMEQtRTYzQi03QjIxLUI4NzIwNUY4QjE5
QT4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvT3BlbkdMLmZyYW1ld29yay9WZXJzaW9ucy9B
L0xpYnJhcmllcy9saWJHTFUuZHlsaWIKMHg5N2U4ZjAwMCAtIDB4OTdlZjBmZTcgIGNvbS5hcHBs
ZS5Db3JlVGV4dCAzLjEuMCAoPz8/KSA8MTM3MkRBQkUtRjE4My1ERDAzLTAzQzItNjRCMjQ2NEE0
RkQ1PiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZpY2VzLmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvQ29yZVRleHQuZnJhbWV3b3JrL1ZlcnNpb25zL0Ev
Q29yZVRleHQKMHg5N2VmMTAwMCAtIDB4OTdmMDVmZmIgIGNvbS5hcHBsZS5zcGVlY2guc3ludGhl
c2lzLmZyYW1ld29yayAzLjEwLjM1ICgzLjEwLjM1KSA8NTdERDU0NTgtNEYyNC1EQTdELTA5Mjct
QzMzMjFBNjVENzQzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBsaWNhdGlvblNlcnZp
Y2VzLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvU3BlZWNoU3ludGhlc2lzLmZyYW1l
d29yay9WZXJzaW9ucy9BL1NwZWVjaFN5bnRoZXNpcwoweDk4NzNhMDAwIC0gMHg5ODhiY2ZlNyAg
bGliaWN1Y29yZS5BLmR5bGliIDQwLjAuMCAoY29tcGF0aWJpbGl0eSAxLjAuMCkgPDk2QTQ1RTAz
LTJCMjktODNFQi0wRkM2LTJDOTMyRTM5ODcyMj4gL3Vzci9saWIvbGliaWN1Y29yZS5BLmR5bGli
CjB4OTg4YmQwMDAgLSAweDk5MTljZmY3ICBjb20uYXBwbGUuQXBwS2l0IDYuNi41ICgxMDM4LjI5
KSA8RTc2QTA1QTYtMjdDNi1EQTAyLTA5NjEtNUM4RUVEQzVGMEE3PiAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0MvQXBwS2l0CjB4OTkxOWQwMDAg
LSAweDk5MTlkZmY3ICBsaWJsYW5naWQuZHlsaWIgPz8/ICg/Pz8pIDxCOTk2MDdGQy01NjQ2LTMy
QzgtMkMxNi1BRkI1RUE5MDk3QzI+IC91c3IvbGliL2xpYmxhbmdpZC5keWxpYgoweDk5MTllMDAw
IC0gMHg5OTFhMmZmNyAgbGliR0ZYU2hhcmVkLmR5bGliID8/PyAoPz8/KSA8Mjg2RjQ2NkMtMjg1
Ni1CNTc5LUI4N0YtNEU5QTM1QzgwMjYzPiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVu
R0wuZnJhbWV3b3JrL1ZlcnNpb25zL0EvTGlicmFyaWVzL2xpYkdGWFNoYXJlZC5keWxpYgoweDk5
MWEzMDAwIC0gMHg5OTFlNWZmNyAgbGlidkRTUC5keWxpYiAyNjguMC4xIChjb21wYXRpYmlsaXR5
IDEuMC4wKSA8M0YwRUQyMDAtNzQxQi00RTI3LUI4OUYtNjM0QjEzMUY1RTlFPiAvU3lzdGVtL0xp
YnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29y
a3MvdmVjTGliLmZyYW1ld29yay9WZXJzaW9ucy9BL2xpYnZEU1AuZHlsaWIKMHg5OTFlNjAwMCAt
IDB4OTkyZDhmZjcgIGxpYmNyeXB0by4wLjkuOC5keWxpYiAwLjkuOCAoY29tcGF0aWJpbGl0eSAw
LjkuOCkgPDc0ODI5MzNCLTRBRjYtRUQ1NS1BRDcyLTRGQkQxRTEzNDk1OD4gL3Vzci9saWIvbGli
Y3J5cHRvLjAuOS44LmR5bGliCjB4OTk0MmUwMDAgLSAweDk5NTBiZmY3ICBjb20uYXBwbGUudklt
YWdlIDQuMCAoNC4wKSA8NjQ1OTdFNEItRjE0NC1EQkIzLUY0MjgtMEVDM0Q5QTEyMTlFPiAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BY2NlbGVyYXRlLmZyYW1ld29yay9WZXJzaW9ucy9BL0Zy
YW1ld29ya3MvdkltYWdlLmZyYW1ld29yay9WZXJzaW9ucy9BL3ZJbWFnZQoweDk5NTBjMDAwIC0g
MHg5OTViY2ZmMyAgY29tLmFwcGxlLkNvbG9yU3luYyA0LjYuMyAoNC42LjMpIDw2OEI2QTFCOS04
NkNGLTBDNUEtN0Q2My01NkVENEJCMkVCNUI+IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0Fw
cGxpY2F0aW9uU2VydmljZXMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3Jrcy9Db2xvclN5
bmMuZnJhbWV3b3JrL1ZlcnNpb25zL0EvQ29sb3JTeW5jCjB4OTk2OGIwMDAgLSAweDk5NmNmZmU3
ICBjb20uYXBwbGUuTWV0YWRhdGEgMTAuNi4zICg1MDcuOCkgPDUzQkIzNjBBLTE4MTMtMTcwRC04
MjdGLUMxODYzRUYxNTUzNz4gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29yZVNlcnZpY2Vz
LmZyYW1ld29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvTWV0YWRhdGEuZnJhbWV3b3JrL1ZlcnNp
b25zL0EvTWV0YWRhdGEKMHhmZmZmMDAwMCAtIDB4ZmZmZjFmZmYgIGxpYlN5c3RlbS5CLmR5bGli
ID8/PyAoPz8/KSA8MDZBNTMzNkEtQTZGNi00RTYyLUY1NUYtNDkwOUE2NDYzMUMyPiAvdXNyL2xp
Yi9saWJTeXN0ZW0uQi5keWxpYgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53914</attachid>
            <date>2010-04-20 20:49:54 -0700</date>
            <delta_ts>2010-04-22 11:40:04 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2908</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmZjY2QyNy4uYjY3ZDBiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNC0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBmYXN0L3dvcmtlcnMvd3JhcHBlci1tYXAtZ2Mu
aHRtbCBjcmFzaGVzIG9uIFNub3cgTGVvcGFyZCBSZWxlYXNlIEJvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1NTQKKworICAgICAgICBUaGUgZmxh
a3kgZmFzdC93b3JrZXJzL3dyYXBwZXItbWFwLWdjLmh0bWwgd2lsbCBzdG9wIGJlaW5nIGZsYWt5
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBDaGVjayBpZiB0aGUgdG9K
UygpIGZvciBXb3JrZXJDb250ZXh0IHJldHVybnMganNOdWxsKCkuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTog
cmV0dXJuIGpzTnVsbCBpbnN0ZWFkIG9mIEpTVmFsdWUoMCkgaW4gY2FzZSB3ZSBuZWVkIHRvIHBy
ZXZlbnQgSlMgZXhlY3V0aW9uLiAKKwogMjAxMC0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZybyBDaHJvbWl1bS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCAzODUzY2ZjLi45MmFk
ZjYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMTAsOSAr
MTEwLDE1IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIER5bmFtaWNHbG9iYWxP
YmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShleGVjLCBnbG9iYWxEYXRhLT5keW5hbWljR2xv
YmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA6IGdsb2JhbE9iamVj
dCk7CiAKICAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKLSAgICAg
ICAgSlNWYWx1ZSByZXR2YWwgPSBoYW5kbGVFdmVudEZ1bmN0aW9uCi0gICAgICAgICAgICA/IEpT
Qzo6Y2FsbChleGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpz
RnVuY3Rpb24sIGFyZ3MpCi0gICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9u
LCBjYWxsVHlwZSwgY2FsbERhdGEsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudC0+Y3Vy
cmVudFRhcmdldCgpKSwgYXJncyk7CisgICAgICAgIEpTVmFsdWUgcmV0dmFsOworICAgICAgICBp
ZiAoaGFuZGxlRXZlbnRGdW5jdGlvbikKKyAgICAgICAgICAgIHJldHZhbCA9IEpTQzo6Y2FsbChl
eGVjLCBoYW5kbGVFdmVudEZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzRnVuY3Rpb24s
IGFyZ3MpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpOworICAgICAg
ICAgICAgaWYgKHRoaXNWYWx1ZS5pc051bGwoKSkgIC8vIEluIGNhc2Ugd2hlbiB0YXJnZXQgaXMg
YSB0ZXJtaW5hdGVkIHdvcmtlciBjb250ZXh0LCBpdCBtYXkgbm90IGhhdmUgYSB2YWxpZCBKUyB3
cmFwcGVyLgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHJldHZhbCA9IEpT
Qzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwg
YXJncyk7CisgICAgICAgIH0KICAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3Rv
cCgpOwogCiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKaW5kZXggMjQ5
MWY0ZC4uNmEzMmZmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRCYXNlLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJh
c2UuY3BwCkBAIC03MSw3ICs3MSwxMCBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udGV4dCkKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3Jp
cHQgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKICAgICBpZiAoIXNjcmlwdCkKICAgICAgICAg
cmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiBzY3JpcHQtPndvcmtlckNvbnRleHRXcmFwcGVy
KCk7CisgICAgSlNXb3JrZXJDb250ZXh0KiBjb250ZXh0V3JhcHBlciA9IHNjcmlwdC0+d29ya2Vy
Q29udGV4dFdyYXBwZXIoKTsKKyAgICBpZiAoIWNvbnRleHRXcmFwcGVyKQorICAgICAgICByZXR1
cm4ganNOdWxsKCk7CisgICAgcmV0dXJuIGNvbnRleHRXcmFwcGVyOwogfQogCiBKU0RlZGljYXRl
ZFdvcmtlckNvbnRleHQqIHRvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KEpTVmFsdWUgdmFsdWUp
Cg==
</data>
<flag name="review"
          id="37744"
          type_id="1"
          status="-"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="37745"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54081</attachid>
            <date>2010-04-22 11:40:04 -0700</date>
            <delta_ts>2010-04-22 11:44:25 -0700</delta_ts>
            <desc>Added check in ScheduledAction</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3640</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmZjY2QyNy4uYTE0MzI0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBmYXN0L3dvcmtlcnMvd3JhcHBlci1tYXAtZ2Mu
aHRtbCBjcmFzaGVzIG9uIFNub3cgTGVvcGFyZCBSZWxlYXNlIEJvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1NTQKKworICAgICAgICBUaGUgZmxh
a3kgZmFzdC93b3JrZXJzL3dyYXBwZXItbWFwLWdjLmh0bWwgd2lsbCBzdG9wIGJlaW5nIGZsYWt5
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBDaGVjayBpZiB0aGUgdG9K
UygpIGZvciBXb3JrZXJDb250ZXh0IHJldHVybnMganNOdWxsKCkuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTog
cmV0dXJuIGpzTnVsbCBpbnN0ZWFkIG9mIEpTVmFsdWUoMCkgaW4gY2FzZSB3ZSBuZWVkIHRvIHBy
ZXZlbnQgSlMgZXhlY3V0aW9uLiAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKTogQWRk
ZWQgY2hlY2sgZm9yIDAgd29ya2VyQ29udGV4dCB3cmFwcGVyLgorCiAyMDEwLTA0LTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBm
aXggZnJvIENocm9taXVtLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IDM4NTNjZmMuLjkyYWRmNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAKQEAgLTExMCw5ICsxMTAsMTUgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAg
ICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4ZWMsIGdsb2Jh
bERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2Jq
ZWN0IDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tl
ci5zdGFydCgpOwotICAgICAgICBKU1ZhbHVlIHJldHZhbCA9IGhhbmRsZUV2ZW50RnVuY3Rpb24K
LSAgICAgICAgICAgID8gSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncykKLSAgICAgICAgICAgIDogSlNDOjpjYWxs
KGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpLCBhcmdzKTsKKyAgICAgICAgSlNWYWx1ZSBy
ZXR2YWw7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0
dmFsID0gSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXZlbnQtPmN1cnJlbnRU
YXJnZXQoKSk7CisgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzTnVsbCgpKSAgLy8gSW4gY2Fz
ZSB3aGVuIHRhcmdldCBpcyBhIHRlcm1pbmF0ZWQgd29ya2VyIGNvbnRleHQsIGl0IG1heSBub3Qg
aGF2ZSBhIHZhbGlkIEpTIHdyYXBwZXIuCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgcmV0dmFsID0gSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgfQogICAgICAgICBnbG9iYWxEYXRhLT50
aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50
RXZlbnQoc2F2ZWRFdmVudCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEJhc2UuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmNwcAppbmRleCAyNDkxZjRkLi42YTMyZmZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTcxLDcgKzcxLDEwIEBAIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqLCBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIFdvcmtlclNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdCA9IHdvcmtlckNvbnRleHQtPnNjcmlwdCgpOwogICAgIGlmICgh
c2NyaXB0KQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIHNjcmlwdC0+d29y
a2VyQ29udGV4dFdyYXBwZXIoKTsKKyAgICBKU1dvcmtlckNvbnRleHQqIGNvbnRleHRXcmFwcGVy
ID0gc2NyaXB0LT53b3JrZXJDb250ZXh0V3JhcHBlcigpOworICAgIGlmICghY29udGV4dFdyYXBw
ZXIpCisgICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICByZXR1cm4gY29udGV4dFdyYXBwZXI7
CiB9CiAKIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9KU0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1
bGVkQWN0aW9uLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApp
bmRleCA4ZmM4NjBiLi5iMGM5YTgzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCkBAIC0xNDAsNiArMTQwLDggQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUo
V29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKIAogICAgIGlmIChtX2Z1bmN0aW9uKSB7CiAg
ICAgICAgIEpTV29ya2VyQ29udGV4dCogY29udGV4dFdyYXBwZXIgPSBzY3JpcHRDb250cm9sbGVy
LT53b3JrZXJDb250ZXh0V3JhcHBlcigpOworICAgICAgICBpZiAoIWNvbnRleHRXcmFwcGVyKQor
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoY29u
dGV4dFdyYXBwZXIsIGNvbnRleHRXcmFwcGVyKTsKICAgICB9IGVsc2UgewogICAgICAgICBTY3Jp
cHRTb3VyY2VDb2RlIGNvZGUobV9jb2RlLCB3b3JrZXJDb250ZXh0LT51cmwoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54082</attachid>
            <date>2010-04-22 11:44:25 -0700</date>
            <delta_ts>2010-04-27 17:34:06 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3864</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmZjY2QyNy4uYTE0MzI0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNC0yMCAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBmYXN0L3dvcmtlcnMvd3JhcHBlci1tYXAtZ2Mu
aHRtbCBjcmFzaGVzIG9uIFNub3cgTGVvcGFyZCBSZWxlYXNlIEJvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1NTQKKworICAgICAgICBUaGUgZmxh
a3kgZmFzdC93b3JrZXJzL3dyYXBwZXItbWFwLWdjLmh0bWwgd2lsbCBzdG9wIGJlaW5nIGZsYWt5
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBDaGVjayBpZiB0aGUgdG9K
UygpIGZvciBXb3JrZXJDb250ZXh0IHJldHVybnMganNOdWxsKCkuCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTog
cmV0dXJuIGpzTnVsbCBpbnN0ZWFkIG9mIEpTVmFsdWUoMCkgaW4gY2FzZSB3ZSBuZWVkIHRvIHBy
ZXZlbnQgSlMgZXhlY3V0aW9uLiAKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKTogQWRk
ZWQgY2hlY2sgZm9yIDAgd29ya2VyQ29udGV4dCB3cmFwcGVyLgorCiAyMDEwLTA0LTIwICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBm
aXggZnJvIENocm9taXVtLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IDM4NTNjZmMuLmQ2MDAxN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAKQEAgLTExMCw5ICsxMTAsMTUgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAg
ICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4ZWMsIGdsb2Jh
bERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2Jq
ZWN0IDogZ2xvYmFsT2JqZWN0KTsKIAogICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tl
ci5zdGFydCgpOwotICAgICAgICBKU1ZhbHVlIHJldHZhbCA9IGhhbmRsZUV2ZW50RnVuY3Rpb24K
LSAgICAgICAgICAgID8gSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwganNGdW5jdGlvbiwgYXJncykKLSAgICAgICAgICAgIDogSlNDOjpjYWxs
KGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdG9KUyhleGVjLCBnbG9iYWxP
YmplY3QsIGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpLCBhcmdzKTsKKyAgICAgICAgSlNWYWx1ZSBy
ZXR2YWw7CisgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0aW9uKQorICAgICAgICAgICAgcmV0
dmFsID0gSlNDOjpjYWxsKGV4ZWMsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwganNGdW5jdGlvbiwgYXJncyk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgZXZlbnQtPmN1cnJlbnRU
YXJnZXQoKSk7CisgICAgICAgICAgICBpZiAodGhpc1ZhbHVlLmlzTnVsbCgpKSAvLyBJbiBjYXNl
IHdoZW4gdGFyZ2V0IGlzIGEgdGVybWluYXRlZCB3b3JrZXIgY29udGV4dCwgaXQgbWF5IG5vdCBo
YXZlIGEgdmFsaWQgSlMgd3JhcHBlci4KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICByZXR2YWwgPSBKU0M6OmNhbGwoZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICB9CiAgICAgICAgIGdsb2JhbERhdGEtPnRp
bWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRF
dmVudChzYXZlZEV2ZW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0QmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJh
c2UuY3BwCmluZGV4IDI0OTFmNGQuLjZhMzJmZmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnRleHRCYXNlLmNwcApAQCAtNzEsNyArNzEsMTAgQEAgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSosIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQpCiAgICAgV29ya2VyU2NyaXB0
Q29udHJvbGxlciogc2NyaXB0ID0gd29ya2VyQ29udGV4dC0+c2NyaXB0KCk7CiAgICAgaWYgKCFz
Y3JpcHQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4gc2NyaXB0LT53b3Jr
ZXJDb250ZXh0V3JhcHBlcigpOworICAgIEpTV29ya2VyQ29udGV4dCogY29udGV4dFdyYXBwZXIg
PSBzY3JpcHQtPndvcmtlckNvbnRleHRXcmFwcGVyKCk7CisgICAgaWYgKCFjb250ZXh0V3JhcHBl
cikKKyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIHJldHVybiBjb250ZXh0V3JhcHBlcjsK
IH0KIAogSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0KiB0b0pTRGVkaWNhdGVkV29ya2VyQ29udGV4
dChKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmlu
ZGV4IDhmYzg2MGIuLmFjNjA4YWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAKQEAgLTEzOSw4ICsxMzksOCBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQogICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKIAogICAgIGlmICht
X2Z1bmN0aW9uKSB7Ci0gICAgICAgIEpTV29ya2VyQ29udGV4dCogY29udGV4dFdyYXBwZXIgPSBz
Y3JpcHRDb250cm9sbGVyLT53b3JrZXJDb250ZXh0V3JhcHBlcigpOwotICAgICAgICBleGVjdXRl
RnVuY3Rpb25JbkNvbnRleHQoY29udGV4dFdyYXBwZXIsIGNvbnRleHRXcmFwcGVyKTsKKyAgICAg
ICAgaWYgKEpTV29ya2VyQ29udGV4dCogY29udGV4dFdyYXBwZXIgPSBzY3JpcHRDb250cm9sbGVy
LT53b3JrZXJDb250ZXh0V3JhcHBlcigpKQorICAgICAgICAgICAgZXhlY3V0ZUZ1bmN0aW9uSW5D
b250ZXh0KGNvbnRleHRXcmFwcGVyLCBjb250ZXh0V3JhcHBlcik7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgU2NyaXB0U291cmNlQ29kZSBjb2RlKG1fY29kZSwgd29ya2VyQ29udGV4dC0+dXJsKCkp
OwogICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5ldmFsdWF0ZShjb2RlKTsK
</data>
<flag name="review"
          id="37964"
          type_id="1"
          status="-"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="37965"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54484</attachid>
            <date>2010-04-27 17:34:06 -0700</date>
            <delta_ts>2010-04-28 10:47:56 -0700</delta_ts>
            <desc>Patch with a more explicit check.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6482</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWZjNWY0Mi4uZDMyZjQyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNC0yNyAgRG1pdHJ5IFRpdG92
ICA8ZGltaWNoQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBmYXN0L3dvcmtlcnMvd3JhcHBlci1tYXAtZ2Mu
aHRtbCBjcmFzaGVzIG9uIFNub3cgTGVvcGFyZCBSZWxlYXNlIEJvdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc1NTQKKworICAgICAgICBUaGUgZmxh
a3kgZmFzdC93b3JrZXJzL3dyYXBwZXItbWFwLWdjLmh0bWwgd2lsbCBzdG9wIGJlaW5nIGZsYWt5
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICBjaGVjayBp
ZiBKUyBleGVjdXRpb24gd2FzIHRlcm1pbmF0ZWQsIGFzIGluIGNhc2VzIG9mIFdvcmtlci50ZXJt
aW5hdGUoKSBvciBXb3JrZXJHbG9iYWxTY29wZS5jbG9zZSgpLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IEFT
U0VSVCB0aGUgdmFsdWUgb2Ygd29ya2VyQ29udGV4dFdyYXBwZXIsIGl0IHNob3VsZCBuZXZlciBi
ZSAwLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OndvcmtlckNvbnRleHRXcmFw
cGVyKTogcmVtb3ZlIHJldHVybmluZyAwIGlmIEpTIGV4ZWN1dGlvbiB3YXMgZm9yYmlkZGVuLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aXNFeGVjdXRpb25Gb3Ji
aWRkZW4pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmlzRXhlY3V0aW9uRm9y
YmlkZGVuKToKKworICAgICAgICBBZGQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6aXNKU0V4ZWN1
dGlvblRlcm1pbmF0ZWQoKSwgaXQgaXMgYWx3YXlzICdmYWxzZScgZm9yIERvY3VtZW50CisgICAg
ICAgIGFuZCAndHJ1ZScgZm9yIFdvcmtlckNvbnRleHQgd2hlbiBzY3JpcHQgaXMgdGVybWluYXRl
ZC4KKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzSlNFeGVjdXRpb25U
ZXJtaW5hdGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aXNKU0V4ZWN1dGlvblRlcm1pbmF0ZWQpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5oOgorCiAyMDEwLTA0LTI3ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggOWY4MzA5Mi4uYzY0
YWEyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
CisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcApAQCAtNjAsNyAr
NjAsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6bWFya0pTRnVuY3Rpb24oTWFya1N0YWNrJiBt
YXJrU3RhY2spCiB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXZlbnQqIGV2ZW50KQogewogICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpCisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25UZXJtaW5hdGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1dvcmtlckNvbnRleHRCYXNlLmNwcAppbmRleCAyNDkxZjRkLi5lZmZlNDg4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0QmFzZS5jcHAKQEAgLTcxLDcg
KzcxLDkgQEAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSosIFdvcmtlckNvbnRleHQqIHdvcmtlckNv
bnRleHQpCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0ID0gd29ya2VyQ29udGV4
dC0+c2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsK
LSAgICByZXR1cm4gc2NyaXB0LT53b3JrZXJDb250ZXh0V3JhcHBlcigpOworICAgIEpTV29ya2Vy
Q29udGV4dCogY29udGV4dFdyYXBwZXIgPSBzY3JpcHQtPndvcmtlckNvbnRleHRXcmFwcGVyKCk7
CisgICAgQVNTRVJUKGNvbnRleHRXcmFwcGVyKTsKKyAgICByZXR1cm4gY29udGV4dFdyYXBwZXI7
CiB9CiAKIEpTRGVkaWNhdGVkV29ya2VyQ29udGV4dCogdG9KU0RlZGljYXRlZFdvcmtlckNvbnRl
eHQoSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmgKaW5kZXggMzhjM2MzMC4uNjBjM2IwNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTUyLDkgKzUyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIEpTV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dFdyYXBwZXIo
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIDA7Ci0KICAgICAgICAgICAgIGluaXRTY3JpcHRJZk5lZWRlZCgp
OwogICAgICAgICAgICAgcmV0dXJuIG1fd29ya2VyQ29udGV4dFdyYXBwZXI7CiAgICAgICAgIH0K
QEAgLTY2LDYgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGVudW0gRm9y
YmlkRXhlY3V0aW9uT3B0aW9uIHsgVGVybWluYXRlUnVubmluZ1NjcmlwdCwgTGV0UnVubmluZ1Nj
cmlwdEZpbmlzaCB9OwogICAgICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbihGb3JiaWRFeGVjdXRp
b25PcHRpb24pOworICAgICAgICBib29sIGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47IH0KIAogICAgICAgICBKU0M6OkpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSgpIHsgcmV0dXJuIG1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNv
cmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDYxNjY5N2EuLjVl
MzE1OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5o
CkBAIC01OCw2ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBlbnVtIEZv
cmJpZEV4ZWN1dGlvbk9wdGlvbiB7IFRlcm1pbmF0ZVJ1bm5pbmdTY3JpcHQsIExldFJ1bm5pbmdT
Y3JpcHRGaW5pc2ggfTsKICAgICAgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oRm9yYmlkRXhlY3V0
aW9uT3B0aW9uKTsKKyAgICAgICAgYm9vbCBpc0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXhlY3V0aW9uRm9yYmlkZGVuOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyIGZvciB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb250ZXh0LiAw
IHdpbGwgYmUgcmV0dXJuZWQgaWYgdGhlIGN1cnJlbnQgZXhlY3V0aW5nIGNvbnRleHQgaXMgbm90
IHRoZSB3b3JrZXIgY29udGV4dC4KICAgICAgICAgc3RhdGljIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA0MGM0YmQ2Li5mZjVkNDM1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKQEAgLTk1MCw2ICs5NTAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1
dGlvblRlcm1pbmF0ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBzZXRV
c2luZ0dlb2xvY2F0aW9uKGJvb2wgZikgeyBtX3VzaW5nR2VvbG9jYXRpb24gPSBmOyB9CiAgICAg
Ym9vbCB1c2luZ0dlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91c2luZ0dlb2xvY2F0aW9u
OyB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGQwZjJlMjYuLjE4ZTJj
ZDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysg
Yi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTc2LDYgKzc2LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0b3BEYXRhYmFzZXMoRGF0YWJhc2VU
YXNrU3luY2hyb25pemVyKik7CiAjZW5kaWYKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4
dFRocmVhZCgpIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGlzSlNFeGVjdXRpb25U
ZXJtaW5hdGVkKCkgY29uc3QgPSAwOwogCiAgICAgICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0
IHsgcmV0dXJuIHZpcnR1YWxVUkwoKTsgfQogICAgICAgICBLVVJMIGNvbXBsZXRlVVJMKGNvbnN0
IFN0cmluZyYgdXJsKSBjb25zdCB7IHJldHVybiB2aXJ0dWFsQ29tcGxldGVVUkwodXJsKTsgfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGM2ZWU2MDYuLmI1MWE0OTcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5jcHAKQEAgLTI4OCw2ICsyODgsMTEgQEAgYm9vbCBXb3JrZXJDb250
ZXh0Ojppc0NvbnRleHRUaHJlYWQoKSBjb25zdAogICAgIHJldHVybiBjdXJyZW50VGhyZWFkKCkg
PT0gdGhyZWFkKCktPnRocmVhZElEKCk7CiB9CiAKK2Jvb2wgV29ya2VyQ29udGV4dDo6aXNKU0V4
ZWN1dGlvblRlcm1pbmF0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3NjcmlwdC0+aXNFeGVj
dXRpb25Gb3JiaWRkZW4oKTsKK30KKwogRXZlbnRUYXJnZXREYXRhKiBXb3JrZXJDb250ZXh0Ojpl
dmVudFRhcmdldERhdGEoKQogewogICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oIGIvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckNvbnRleHQuaAppbmRleCA3MDI2ZTM1Li45MTMwMGMzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmgKQEAgLTExMSw2ICsxMTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkYXRhYmFzZUV4Y2VlZGVkUXVvdGEoY29uc3QgU3RyaW5nJikgeyB9CiAj
ZW5kaWYKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgpIGNvbnN0OworICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvblRlcm1pbmF0ZWQoKSBjb25zdDsKIAogCiAg
ICAgICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQgZm9yIEdDIG1hcmtpbmcuIFNlZSBKU1dv
cmtlckNvbnRleHQ6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smKSBpbgo=
</data>
<flag name="review"
          id="38487"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="38488"
          type_id="3"
          status="-"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>