Sort Forum Threads by Created Date?

Despite all the cool functionality provided to users, I'm getting asked for more. Is there any way to sort a forum by the date each thread was created? The current "Date" selection is the date of last activity, not the date of creation.

Thanks!

  • Hi Jillian,

    I believe you're looking for "By dates asked" in the filters for the Forum - Thread List widget. Should be displayed to end users to select:

    Does your site have that option by chance? If not, let me know what you're seeing for that filter and we'll go from there.

    Thanks!

  • Hmm. Interesting. We don't have that option. We're on 11.0.0.7924.

  • The API supports this sorting option, but the default version of the Thread List widget wasn't exposing it. The version of the widget in this community is apparently customized to show that option. I've attached the customized version. The actual change is only one new resource and one new line of code in the widget's setquery.vm attachment.

    <scriptedContentFragments>
    	<scriptedContentFragment name="${resource:Forums_ThreadList_Name}" version="11.1.2.11315" description="${resource:Forums_ThreadList_Description}" instanceIdentifier="c6af9d06240940beae71ade1bf750570" theme="" isCacheable="true" varyCacheByUser="true" showHeaderByDefault="true" cssClass="thread-list" lastModified="2020-04-07 17:59:01Z">
    		<contentScript language="Velocity"><![CDATA[$core_v2_page.AddLink('stylesheet', $core_v2_widget.GetExecutedFileUrl('style.less'), "%{ Position = 'AfterTheme' }")
    
    
    #set ($showSidebarList = false)
    #set ($region = $core_v2_widget.RegionName.ToLower())
    #set ($layout = $core_v2_page.Layout.ToLower())
    
    #if ($region == 'split-sidebar-left' || $region == 'split-sidebar-right' || $region == 'left-sidebar')
    	#set ($showSidebarList = true)
    #elseif ($region == 'right-sidebar' && !$layout.Contains('split-content') && !$layout.Contains('split-sidebar'))
    	#set ($showSidebarList = true)
    #end
    
    #if($showSidebarList)
    	$core_v2_widget.ExecuteFile('sidebar.vm')
    #else
    	$core_v2_ui.PagedContent('list.vm')
    
    	#registerEndOfPageHtml()
    		<script type="text/javascript">
    		jQuery(function(j){
    			j('#$core_v2_widget.WrapperElementId').on('click', '.answer-status a', function(e){
    				e.preventDefault();
    				var link = j(this),
    					threadItem = link.closest('.content-item');
    					previewItem = threadItem.next('.preview');
    					container = previewItem.find('.content');
    
    				if(!container.is(':empty')) {
    					container.empty();
    					threadItem.removeClass('previewing');
    					previewItem.removeClass('previewing');
    				} else {
    					threadItem.addClass('previewing');
    					previewItem.addClass('previewing');
    					j.telligent.evolution.get({
    						url: '$core_v2_encoding.JavascriptEncode($core_v2_widget.GetExecutedFileUrl('answer.vm'))',
    						data: {
    							threadId: link.data('threadid'),
    							answerType: link.data('answertype')
    						}
    					}).then(function(excerpt){
    						container.hide().empty().append(excerpt).show();
    					});
    				}
    			});
    		});
    		</script>
    	#end
    #end
    
    			]]></contentScript>
    		<headerScript language="Velocity"><![CDATA[
    #set($header = $core_v2_widget.GetStringValue('fragmentHeader', ''))
    #set ($forumOrGroup = $core_v2_page.ParseQueryString($core_v2_widget.GetStringValue('selectedForumOrGroup', '')))
    
    #if($header == '' || $header == '${resource:Forums_ThreadList_Name}')
    	#if ($forumOrGroup.Value('Forum'))
    		#set ($forumId = $core_v2_utility.ParseInt($forumOrGroup.Value('Forum')))
    		#set ($header = $core_v2_forum.Get($forumId).Name)
    	#elseif ($forumOrGroup.Value('Group'))
    		#set ($groupId = $core_v2_utility.ParseInt($forumOrGroup.Value('Group')))
    		#set ($header = $core_v2_group.Get("%{Id=$groupId}").Name)
    	#elseif ($core_v2_forum.Current)
    		#set ($header = $core_v2_forum.Current.Name)
    	#else
    		#set ($header = $core_v2_widget.GetStringValue('fragmentHeader', '${resource:Forums_ThreadList_Name}'))
    	#end
    #end
    
    $core_v2_widget.ApplyTokens($header)
    		]]></headerScript>
    		<configuration><![CDATA[<propertyGroup id="options" resourceName="Options">
    	<property id="fragmentHeader" resourceName="CF_Title" dataType="string" defaultValue="${resource:Forums_ThreadList_Name}" controlType="Telligent.Evolution.Controls.ContentFragmentTokenStringControl, Telligent.Evolution.Platform" />
    	<property id="includeDiscussions" resourceName="CF_IncludeDiscussions" dataType="bool" defaultValue="true" />
    	<property id="includeQuestions" resourceName="CF_IncludeQuestions" dataType="bool" defaultValue="true" />
    	<property id="supportUserFiltering" resourceName="CF_SupportUserFiltering" dataType="bool" defaultValue="true" />
    	<property id="filter" resourceName="CF_Filter" dataType="string" defaultValue="all">
    		<propertyValue value="Active" resourceName="CF_Filter_All" />
    		<propertyValue value="Unread" resourceName="CF_Filter_Unread" />
    		<propertyValue value="Answered" resourceName="CF_Filter_Answered" />
    		<propertyValue value="Unanswered" resourceName="CF_Filter_Unanswered" />
    		<propertyValue value="AnsweredNotVerified" resourceName="CF_Filter_AnsweredNotVerified" />
    		<propertyValue value="AnsweredWithNotVerified" resourceName="CF_Filter_AnsweredIncludingNotVerified" />
    		<propertyValue value="MyThreads" resourceName="CF_Filter_MyThreads" />
    		<propertyValue value="Authored" resourceName="CF_Filter_Authored" />
    		<propertyValue value="ContextualMyThreads" resourceName="CF_Filter_MyThreads_Contextual" />
    		<propertyValue value="ContextualAuthored" resourceName="CF_Filter_Authored_Contextual" />
    	</property>
    	<property id="age" resourceName="CF_Age" dataType="string" defaultValue="0">
    		<propertyValue value="0" resourceName="CF_Filter_AllAges" />
    		<propertyValue value="-3" resourceName="CF_Filter_3Months" />
    		<propertyValue value="-6" resourceName="CF_Filter_6Months" />
    		<propertyValue value="-12" resourceName="CF_Filter_12Months" />
    	</property>
    	<property id="sortBy" resourceName="CF_SortBy" dataType="string" defaultValue="LastPost">
    		<propertyValue value="LastPost" resourceName="CF_ForumThreadList_Sort_DateTime" />
    		<propertyValue value="Replies" resourceName="CF_ForumThreadList_Sort_Replies" />
    		<propertyValue value="Views" resourceName="CF_ForumThreadList_Sort_Views" />
    		<propertyValue value="Topic" resourceName="CF_ForumThreadList_Sort_Topic" />
    		<propertyValue value="ContentQuality" resourceName="CF_ForumThreadList_Sort_Quality" />
    		<propertyValue value="TotalVotes" resourceName="CF_ForumThreadList_Sort_Votes" />
    		<propertyValue value="QualityScore" resourceName="CF_ForumThreadList_Sort_QualityVotes" />
    	</property>
    	<property id="sortOrder" resourceName="CF_SortOrder" dataType="string" defaultValue="Descending">
    		<propertyValue value="Ascending" resourceName="SortOrderDropDownList_Asc" />
    		<propertyValue value="Descending" resourceName="SortOrderDropDownList_Desc" />
    	</property>
    	<property id="popularOnly" resourceName="CF_ForumThreadList_PopularOnly" dataType="bool" defaultValue="false" />
    	<property id="selectedForumOrGroup" resourceName="CF_Forum_SelectGroupAndForum" dataType="custom" defaultValue="" controlType="Telligent.Evolution.Discussions.Controls.ForumSelectionControl, Telligent.Evolution.Forums" />
    	<property id="pageSize" resourceName="Pagesize" dataType="int" defaultValue="15">
    		<propertyRule type="Telligent.Evolution.Controls.PropertyRules.MinMaxValueRule, Telligent.Evolution.Platform" minValue="1" maxValue="100" />
    	</property>
    	<property id="hideEmpty" resourceName="CF_ForumThreadList_HideEmpty" dataType="bool" defaultValue="false" />
    </propertyGroup>
    		]]></configuration>
    		<languageResources><![CDATA[<language key="en-us">
      <resource name="AllRecent">All recent questions and discussions</resource>
      <resource name="AllRecent_Discussions">All recent discussions</resource>
      <resource name="AllRecent_Questions">All recent questions</resource>
      <resource name="Announcement">Announcement</resource>
      <resource name="Answered_Tip">Question answered (click to preview)</resource>
      <resource name="AnsweredNotVerified">Questions with suggested answers</resource>
      <resource name="AnsweredWithNotVerified">Answered questions and discussions</resource>
      <resource name="AnsweredWithNotVerified_Discussions">Answered discussions</resource>
      <resource name="AnsweredWithNotVerified_Questions">Answered questions</resource>
      <resource name="Authored">Questions and discussions you've started</resource>
      <resource name="Authored_Discussions">Discussions you've started</resource>
      <resource name="Authored_Questions">Questions you've asked</resource>
      <resource name="by">by</resource>
      <resource name="cancel">Cancel</resource>
      <resource name="CF_Age">Maximum Age of threads to display</resource>
      <resource name="CF_Filter">Default Filter</resource>
      <resource name="CF_Filter_12Months">12 Months</resource>
      <resource name="CF_Filter_3Months">3 Months</resource>
      <resource name="CF_Filter_6Months">6 Months</resource>
      <resource name="CF_Filter_All">None (Show All)</resource>
      <resource name="CF_Filter_AllAges">None (Show All)</resource>
      <resource name="CF_Filter_Answered">Only Answered</resource>
      <resource name="CF_Filter_AnsweredIncludingNotVerified">Only Answered (including Not Verified Answers)</resource>
      <resource name="CF_Filter_AnsweredNotVerified">Only Answered but not Verified</resource>
      <resource name="CF_Filter_Authored">Accessing User has Authored</resource>
      <resource name="CF_Filter_Authored_Contextual">Contextual User has Authored</resource>
      <resource name="CF_Filter_MyThreads">Accessing User has Participated In</resource>
      <resource name="CF_Filter_MyThreads_Contextual">Contextual User has Participated In</resource>
      <resource name="CF_Filter_Unanswered">Only Unanswered</resource>
      <resource name="CF_Filter_Unread">Unread by Accessing User</resource>
      <resource name="CF_Forum_SelectGroupAndForum">Select group/forum to pull content from</resource>
      <resource name="CF_ForumAdministration">Administer forum</resource>
      <resource name="CF_ForumLinks_Subscribe">Turn Forum notifications on</resource>
      <resource name="CF_ForumLinks_Unsubscribe">Turn Forum notifications off</resource>
      <resource name="CF_ForumsModeration_Plural">{0} posts to moderate</resource>
      <resource name="CF_ForumsModeration_Singular">{0} post to moderate</resource>
      <resource name="CF_ForumThreadList_HideEmpty">Hide if empty</resource>
      <resource name="CF_ForumThreadList_PopularOnly">Show only popular threads</resource>
      <resource name="CF_ForumThreadList_Sort_ContentQuality">Content Quality Score</resource>
      <resource name="CF_ForumThreadList_Sort_DateAsked">By date asked</resource>
      <resource name="CF_ForumThreadList_Sort_DateTime">By date</resource>
      <resource name="CF_ForumThreadList_Sort_Quality">By quality</resource>
      <resource name="CF_ForumThreadList_Sort_QualityVotes">By votes</resource>
      <resource name="CF_ForumThreadList_Sort_Replies">By reply count</resource>
      <resource name="CF_ForumThreadList_Sort_Topic">By name</resource>
      <resource name="CF_ForumThreadList_Sort_Views">By view count</resource>
      <resource name="CF_ForumThreadList_Sort_Votes">By most asked</resource>
      <resource name="CF_IncludeDiscussions">Include Discussion Threads</resource>
      <resource name="CF_IncludeQuestions">Include Question and Answer Threads</resource>
      <resource name="CF_SortBy">Sort By</resource>
      <resource name="CF_SortOrder">Sort Order</resource>
      <resource name="CF_SupportUserFiltering">Support User Filtering and Sorting</resource>
      <resource name="CF_Title">Widget Title</resource>
      <resource name="Contextual_Authored">Questions and discussions this user has started</resource>
      <resource name="Contextual_Authored_Discussions">Discussions this user has started</resource>
      <resource name="Contextual_Authored_Questions">Questions this user has asked</resource>
      <resource name="Contextual_Your">Questions and discussions this user has participated in</resource>
      <resource name="Contextual_Your_Discussions">Discussions this user has participated in</resource>
      <resource name="Contextual_Your_Questions">Questions this user has participated in</resource>
      <resource name="Date">Date</resource>
      <resource name="Discussion">start a discussion</resource>
      <resource name="Discussion_Tip">Discussion</resource>
      <resource name="Forums_ThreadList_Description">Displays a list of forum threads.</resource>
      <resource name="Forums_ThreadList_Name">Forum - Thread List</resource>
      <resource name="FrequentlyAsked">Frequently Asked</resource>
      <resource name="LatestReplyFormat">Latest &lt;a href="{0}" class="internal-link view-user-profile"&gt;{1}&lt;/a&gt;&lt;br /&gt;</resource>
      <resource name="MarkAllRead_Threads_Link">Mark all read</resource>
      <resource name="more">More</resource>
      <resource name="NoResponse">Questions and discussions with no replies</resource>
      <resource name="NoResponse_Questions">Questions with no replies</resource>
      <resource name="NotAnswered_Tip">Unanswered question</resource>
      <resource name="Options">Options</resource>
      <resource name="Pagesize">Number of items to display</resource>
      <resource name="plus_more_answer">Plus {0} more answer</resource>
      <resource name="plus_more_answers">Plus {0} more answers</resource>
      <resource name="Question">ask a question</resource>
      <resource name="Question_or_Discussion">ask a question or start a discussion</resource>
      <resource name="Recent_Questions">Recent Questions</resource>
      <resource name="ReplyCount_Plural">replies</resource>
      <resource name="ReplyCount_Singular">reply</resource>
      <resource name="SortOrderDropDownList_Asc">Ascending</resource>
      <resource name="SortOrderDropDownList_Desc">Descending</resource>
      <resource name="StartedFormat">Started &lt;a href="{0}" class="internal-link view-user-profile"&gt;{1}&lt;/a&gt;&lt;br /&gt;</resource>
      <resource name="Status_Discussion">Discussion</resource>
      <resource name="Status_NotAnswered">Not Answered</resource>
      <resource name="Status_SuggestedAnswer">Suggested Answer</resource>
      <resource name="Status_VerifiedAnswer">Answered</resource>
      <resource name="Sticky">Sticky</resource>
      <resource name="SuggestedAnswer_Tip">Answer suggested (click to preview)</resource>
      <resource name="tags">Tags</resource>
      <resource name="Unanswered">Unanswered questions and discussions</resource>
      <resource name="Unanswered_Discussions">Unanswered discussions</resource>
      <resource name="Unanswered_Questions">Unanswered questions</resource>
      <resource name="Unread">Unread questions and discussions</resource>
      <resource name="Unread_Discussions">Unread discussions</resource>
      <resource name="Unread_Questions">Unread questions</resource>
      <resource name="View">View</resource>
      <resource name="ViewCount_Plural">views</resource>
      <resource name="ViewCount_Singular">view</resource>
      <resource name="ViewThreads_FilterByTopic">By title</resource>
      <resource name="ViewThreads_NoTopics">There are no posts to show. This could be because there are no posts in this forum or due to a filter.</resource>
      <resource name="ViewThreads_NoTopics_Link">There are no posts to show.  Be the first to &lt;a href="{0}"&gt; {1}&lt;/a&gt;.</resource>
      <resource name="Your">Questions and discussions you've participated in</resource>
      <resource name="Your_Discussions">Discussions you've participated in</resource>
      <resource name="Your_Questions">Questions you've participated in</resource>
    </language>]]></languageResources>
    		<additionalCssScript language="Unknown" />
    		<files>
    			<file name="answer.vm">77u/I3NldCAoJHRocmVhZElkID0gZmFsc2UpDQojc2V0ICgkdGhyZWFkSWQgPSAkY29yZV92Ml91dGlsaXR5LlBhcnNlSW50KCRjb3JlX3YyX3BhZ2UuR2V0UXVlcnlTdHJpbmdWYWx1ZSgndGhyZWFkSWQnKSkpDQojc2V0ICgkYW5zd2VyVHlwZSA9ICd2ZXJpZmllZC1hbnN3ZXJzJykNCiNzZXQgKCRhbnN3ZXJUeXBlID0gJGNvcmVfdjJfcGFnZS5HZXRRdWVyeVN0cmluZ1ZhbHVlKCdhbnN3ZXJUeXBlJykpDQoNCiMjIHZlcmlmaWVkLWFuc3dlcnMsIG5vbi12ZXJpZmllZC1hbnN3ZXJzDQoNCiNpZiAoISR0aHJlYWRJZCkNCgkkY29yZV92Ml93aWRnZXQuSGlkZSgpDQojZW5kDQoNCiNzZXQoJGFuc3dlcnMgPSAkY29yZV92Ml9mb3J1bVJlcGx5Lkxpc3QoJHRocmVhZElkLCAiJXsgRm9ydW1SZXBseVF1ZXJ5VHlwZSA9ICRhbnN3ZXJUeXBlLCBTb3J0QnkgPSAnUG9zdERhdGUnLCBTb3J0T3JkZXIgPSAnRGVzY2VuZGluZycsIFBhZ2VTaXplID0gMSwgUGFnZUluZGV4ID0gMCwgSW5jbHVkZVRocmVhZFN0YXJ0ZXIgPSAnRmFsc2UnIH0iKSkNCiNmb3JlYWNoKCRhbnN3ZXIgaW4gJGFuc3dlcnMpDQoJPGRpdiBjbGFzcz0iY29udGVudCBpbmxpbmUiPg0KCQkkY29yZV92Ml9sYW5ndWFnZS5UcnVuY2F0ZSgkYW5zd2VyLkJvZHkoJ1dlYicpLCAyNTAsICcuLi4nKQ0KCQkjaWYgKCRhbnN3ZXJzLlRvdGFsQ291bnQgPiAxKQ0KCQkJPHA+DQoJCQkJI3NldCgkYW5zd2VyQ291bnQgPSAkYW5zd2Vycy5Ub3RhbENvdW50IC0gMSkNCgkJCQkjaWYgKCRhbnN3ZXJDb3VudCA9PSAxKQ0KCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5Gb3JtYXRTdHJpbmcoJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ3BsdXNfbW9yZV9hbnN3ZXInKSwgJGFuc3dlckNvdW50LlRvU3RyaW5nKCkpDQoJCQkJI2Vsc2UNCgkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuRm9ybWF0U3RyaW5nKCRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdwbHVzX21vcmVfYW5zd2VycycpLCAkYW5zd2VyQ291bnQuVG9TdHJpbmcoKSkNCgkJCQkjZW5kDQoJCQk8L3A+DQoJCSNlbmQNCgk8L2Rpdj4NCiNlbmQ=</file>
    			<file name="list.vm">JGNvcmVfdjJfd2lkZ2V0LkV4ZWN1dGVGaWxlKCdzZXRxdWVyeS52bScpDQoNCiNzZXQgKCR0aHJlYWRzID0gJGNvcmVfdjJfZm9ydW1UaHJlYWQuTGlzdCgkZmlsdGVyLCAkb3B0aW9ucykpDQoNCiNpZiAoJGhpZGVFbXB0eSAmJiAoISR0aHJlYWRzIHx8ICR0aHJlYWRzLlRvdGFsQ291bnQgPT0gMCkpDQoJJGNvcmVfdjJfd2lkZ2V0LkhpZGUoKQ0KI2VuZA0KDQojIyBSZW5kZXIgdGhyZWFkcw0KDQojZm9yZWFjaCAoJHRocmVhZCBpbiAkdGhyZWFkcykNCiNiZWZvcmVhbGwNCgk8dWwgY2xhc3M9ImNvbnRlbnQtbGlzdCBjb250ZW50IG1hcmdpbi1ib3R0b20gdGFidWxhciI+DQojZWFjaA0KDQoJPGxpIGNsYXNzPSJjb250ZW50LWl0ZW0gd2l0aC1ocmVmICNpZigkdGhyZWFkLklzU3RpY2t5ICYmICR0aHJlYWQuU3RpY2t5RGF0ZSA+ICRjb3JlX3YyX3V0aWxpdHkuQ3VycmVudERhdGUpIGhpZ2hsaWdodCNlbmQiIGRhdGEtdGhyZWFkaWQ9IiR0aHJlYWQuSWQiIGRhdGEtaHJlZj0iJGNvcmVfdjJfZW5jb2RpbmcuSHRtbEF0dHJpYnV0ZUVuY29kZSgkdGhyZWFkLlVybCkiPg0KDQoJCTxkaXYgY2xhc3M9Imljb24gY2VsbCBhbnN3ZXItc3RhdHVzIj4NCgkJCSNpZiAoJHRocmVhZC5UaHJlYWRUeXBlID09ICJRdWVzdGlvbkFuZEFuc3dlciIpDQoJCQkJI2lmICgkdGhyZWFkLlRocmVhZFN0YXR1cyA9PSAiQW5zd2VyZWQiKQ0KCQkJCQk8c3BhbiBjbGFzcz0iYXR0cmlidXRlLXZhbHVlIj48YSBocmVmPSIjIiB0aXRsZT0iJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Fuc3dlcmVkX1RpcCcpIiBjbGFzcz0idWktdGlwIHZlcmlmaWVkIHJlcGxhY2Utd2l0aC1pY29uIGNoZWNrIiBkYXRhLXRocmVhZGlkPSIkdGhyZWFkLklkIiBkYXRhLWFuc3dlcnR5cGU9InZlcmlmaWVkLWFuc3dlcnMiPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdTdGF0dXNfVmVyaWZpZWRBbnN3ZXInKTwvYT48L3NwYW4+DQoJCQkJI2Vsc2VpZiAoJHRocmVhZC5UaHJlYWRTdGF0dXMgPT0gIkFuc3dlcmVkTm90VmVyaWZpZWQiKQ0KCQkJCQk8c3BhbiBjbGFzcz0iYXR0cmlidXRlLXZhbHVlIj48YSBocmVmPSIjIiB0aXRsZT0iJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1N1Z2dlc3RlZEFuc3dlcl9UaXAnKSIgY2xhc3M9InVpLXRpcCBzdWdnZXN0ZWQgcmVwbGFjZS13aXRoLWljb24gY2hlY2siIGRhdGEtdGhyZWFkaWQ9IiR0aHJlYWQuSWQiIGRhdGEtYW5zd2VydHlwZT0ibm9uLXZlcmlmaWVkLWFuc3dlcnMiPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdTdGF0dXNfU3VnZ2VzdGVkQW5zd2VyJyk8L2E+PC9zcGFuPg0KCQkJCSNlbHNlDQoJCQkJCTxzcGFuIGNsYXNzPSJhdHRyaWJ1dGUtdmFsdWUgdW5hbnN3ZXJlZCB1aS10aXAgcmVwbGFjZS13aXRoLWljb24gaGVscCIgdGl0bGU9IiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdOb3RBbnN3ZXJlZF9UaXAnKSI+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1N0YXR1c19Ob3RBbnN3ZXJlZCcpPC9zcGFuPg0KCQkJCSNlbmQNCgkJCSNlbHNlDQoJCQkJPHNwYW4gY2xhc3M9ImF0dHJpYnV0ZS12YWx1ZSBkaXNjdXNzaW9uIHVpLXRpcCByZXBsYWNlLXdpdGgtaWNvbiBjaGF0IiB0aXRsZT0iJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Rpc2N1c3Npb25fVGlwJykiPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdTdGF0dXNfRGlzY3Vzc2lvbicpPC9zcGFuPg0KCQkJI2VuZA0KCQk8L2Rpdj4NCgkJPGRpdiBjbGFzcz0ibmFtZSBjZWxsIj4NCgkJCTxoMj4NCgkJCQk8YSBocmVmPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCR0aHJlYWQuVXJsKSIgY2xhc3M9ImludGVybmFsLWxpbmsgdmlldy1wb3N0I2lmKCR0aHJlYWQuSGFzUmVhZCkgcmVhZCAjZWxzZSB1bnJlYWQgI2VuZCI+JHRocmVhZC5TdWJqZWN0PC9hPg0KCQkJCSRjb3JlX3YyX3VpLkZvcnVtVm90ZXMoInRocmVhZHF1YWxpdHkiLCAkdGhyZWFkLklkKQ0KCQkJCSNpZiAoJHRocmVhZC5UaHJlYWRUeXBlID09ICJRdWVzdGlvbkFuZEFuc3dlciIpDQoJCQkJCSRjb3JlX3YyX3VpLkZvcnVtVm90ZXMoJ3RocmVhZCcsICR0aHJlYWQuSWQpDQoJCQkJI2VuZA0KCQkJPC9oMj4NCgkJPC9kaXY+DQoJCTxkaXYgY2xhc3M9ImNlbGwgbm93cmFwIHN1cHBsZW1lbnRhcnkiPg0KCQkJPHNwYW4gY2xhc3M9InZhbHVlIj4kdGhyZWFkLlZpZXdDb3VudC5Ub1N0cmluZygpPC9zcGFuPg0KCQkJPHNwYW4gY2xhc3M9ImRlc2NyaXB0aW9uIj4NCgkJCQkjaWYgKCR0aHJlYWQuVmlld0NvdW50ID09IDEpDQoJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdWaWV3Q291bnRfU2luZ3VsYXInKQ0KCQkJCSNlbHNlDQoJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdWaWV3Q291bnRfUGx1cmFsJykNCgkJCQkjZW5kDQoJCQk8L3NwYW4+DQoJCTwvZGl2Pg0KCQk8ZGl2IGNsYXNzPSJjZWxsIG5vd3JhcCBzdXBwbGVtZW50YXJ5Ij4NCgkJCTxzcGFuIGNsYXNzPSJ2YWx1ZSI+JHRocmVhZC5SZXBseUNvdW50LlRvU3RyaW5nKCk8L3NwYW4+DQoJCQk8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iPg0KCQkJCSNpZiAoJHRocmVhZC5SZXBseUNvdW50ID09IDEpDQoJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdSZXBseUNvdW50X1Npbmd1bGFyJykNCgkJCQkjZWxzZQ0KCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnUmVwbHlDb3VudF9QbHVyYWwnKQ0KCQkJCSNlbmQNCgkJCTwvc3Bhbj4NCgkJPC9kaXY+DQoJCTxkaXYgY2xhc3M9ImNlbGwgbm93cmFwIGxhdGVzdCI+DQoJCQkjc2V0ICgkbGF0ZXN0UmVwbHlBdXRob3JJZCA9IGZhbHNlKQ0KCQkJI3NldCAoJGxhdGVzdFJlcGx5QXV0aG9ySWQgPSAkdGhyZWFkLkxhdGVzdEZvcnVtUmVwbHlBdXRob3JJZCkNCgkJCSNzZXQgKCRpc1N0YXJ0ZXIgPSBmYWxzZSkNCgkJCSNzZXQgKCRsYXRlc3RVcmwgPSAkdGhyZWFkLlVybCkNCgkJCSNpZiAoJGxhdGVzdFJlcGx5QXV0aG9ySWQgJiYgJGxhdGVzdFJlcGx5QXV0aG9ySWQgPiAwKQ0KCQkJCSNzZXQgKCRsYXRlc3RVc2VyID0gJGNvcmVfdjJfdXNlci5HZXQoIiV7SWQgPSAkbGF0ZXN0UmVwbHlBdXRob3JJZCB9IikpDQoJCQkJI3NldCAoJGxhdGVzdFVybCA9ICRjb3JlX3YyX2ZvcnVtVXJscy5Gb3J1bVJlcGx5KCR0aHJlYWQuTGF0ZXN0Rm9ydW1SZXBseUlkKSkNCgkJCSNlbHNlDQoJCQkJI3NldCAoJGlzU3RhcnRlciA9IHRydWUpDQoJCQkJI3NldCAoJGxhdGVzdFVzZXIgPSAkdGhyZWFkLkF1dGhvcikNCgkJCSNlbmQNCg0KCQkJI2lmICgkaXNTdGFydGVyKQ0KCQkJCSNzZXQgKCRsYXRlc3RGb3JtYXQgPSAkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnU3RhcnRlZEZvcm1hdCcpKQ0KCQkJI2Vsc2UNCgkJCQkjc2V0ICgkbGF0ZXN0Rm9ybWF0ID0gJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0xhdGVzdFJlcGx5Rm9ybWF0JykpDQoJCQkjZW5kDQoNCgkJCTxzcGFuIGNsYXNzPSJ2YWx1ZSI+DQoJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuRm9ybWF0U3RyaW5nKCRsYXRlc3RGb3JtYXQsICRjb3JlX3YyX2VuY29kaW5nLkh0bWxBdHRyaWJ1dGVFbmNvZGUoJGxhdGVzdFVybCksICRjb3JlX3YyX2xhbmd1YWdlLkZvcm1hdEFnb0RhdGUoJHRocmVhZC5MYXRlc3RQb3N0RGF0ZSkpDQoJCQk8L3NwYW4+DQoNCgkJCTxzcGFuIGNsYXNzPSJkZXNjcmlwdGlvbiI+DQoJCQkJI2lmICgkbGF0ZXN0VXNlci5Qcm9maWxlVXJsKQ0KCQkJCQlieSA8YSBocmVmPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRsYXRlc3RVc2VyLlByb2ZpbGVVcmwpIiBjbGFzcz0iaW50ZXJuYWwtbGluayB2aWV3LXVzZXItcHJvZmlsZSI+JGxhdGVzdFVzZXIuRGlzcGxheU5hbWU8L2E+DQoJCQkJI2Vsc2UNCgkJCQkJYnkgJGxhdGVzdFVzZXIuRGlzcGxheU5hbWUNCgkJCQkjZW5kDQoJCQk8L3NwYW4+DQoJCTwvZGl2Pg0KCTwvbGk+DQoJPGxpIGNsYXNzPSJjb250ZW50LWl0ZW0gcHJldmlldyIgZGF0YS10aHJlYWRpZD0iJHRocmVhZC5JZCI+DQoJCTxkaXYgY2xhc3M9ImNlbGwgc3VwcGxlbWVudGFyeSI+PC9kaXY+DQoJCTxkaXYgY2xhc3M9ImNlbGwgY29udGVudCI+PC9kaXY+DQoJCTxkaXYgY2xhc3M9ImNlbGwgc3VwcGxlbWVudGFyeSI+PC9kaXY+DQoJCTxkaXYgY2xhc3M9ImNlbGwgc3VwcGxlbWVudGFyeSI+PC9kaXY+DQoJCTxkaXYgY2xhc3M9ImNlbGwgc3VwcGxlbWVudGFyeSI+PC9kaXY+DQoJPC9saT4NCiNhZnRlcmFsbA0KCTwvdWw+DQojbm9kYXRhDQoJPGRpdiBjbGFzcz0ibWVzc2FnZSBub3JlY29yZHMiPg0KCQkjc2V0ICgkYWRkVXJsID0gJGNvcmVfdjJfZm9ydW1VcmxzLkFkZFRocmVhZCgkY3VycmVudEZvcnVtLklkLCB0cnVlKSkNCgkJI2lmICgkY3VycmVudEZvcnVtICYmICRhZGRVcmwpDQoNCgkJCSNmb3JlYWNoICgkdGhyZWFkVHlwZSBpbiAkZm9ydW0uQWxsb3dlZFRocmVhZFR5cGVzKQ0KCQkJCSNpZiAoJHRocmVhZFR5cGUgPT0gJ1F1ZXN0aW9uQW5kQW5zd2VyJykNCgkJCQkJI3NldCAoJGhhc1FhRm9ydW1zID0gdHJ1ZSkNCgkJCQkjZWxzZWlmICgkdGhyZWFkVHlwZSA9PSAnRGlzY3Vzc2lvbicpDQoJCQkJCSNzZXQoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgPSB0cnVlKQ0KCQkJCSNlbmQNCgkJCSNlbmQNCgkJCSNpZiAoJGhhc1FhRm9ydW1zICYmICRoYXNEaXNjdXNzaW9uRm9ydW1zKQ0KCQkJCSNzZXQoJG1lc3NhZ2UgPSAkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnUXVlc3Rpb25fb3JfRGlzY3Vzc2lvbicpKQ0KCQkJI2Vsc2VpZigkaGFzUWFGb3J1bXMpDQoJCQkJI3NldCgkbWVzc2FnZSA9ICRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdRdWVzdGlvbicpKQ0KCQkJI2Vsc2UNCgkJCQkjc2V0KCRtZXNzYWdlID0gJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Rpc2N1c3Npb24nKSkNCgkJCSNlbmQNCg0KCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuRm9ybWF0U3RyaW5nKCRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCJWaWV3VGhyZWFkc19Ob1RvcGljc19MaW5rIiksICRhZGRVcmwsICRtZXNzYWdlKQ0KCQkjZWxzZQ0KCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoIlZpZXdUaHJlYWRzX05vVG9waWNzIikNCgkJI2VuZA0KCTwvZGl2Pg0KI2VuZA0KDQoNCiMjIFBhZ2luZw0KDQojc2V0ICgkcGFnZXJPcHRpb25zID0gIiV7IFBhZ2VkQ29udGVudEZpbGUgPSAnbGlzdC52bScsIExvYWRpbmdJbmRpY2F0b3IgPSAndHJ1ZScgfSIpDQojIyBvbmx5IHJlbG9hZCBvbiBlYWNoIGhhc2ggY2hhbmdlIGlmIHRoaXMgc3VwcG9ydHMgdXNlciBmaWx0ZXJpbmcNCiNpZiAoJHN1cHBvcnRVc2VyRmlsdGVyaW5nKQ0KCSRwYWdlck9wdGlvbnMuQWRkKCdMb2FkT25BbnlIYXNoQ2hhbmdlJywgJ3RydWUnKQ0KI2VuZA0KJGNvcmVfdjJfdWkuUGFnZXIoJHRocmVhZHMuUGFnZUluZGV4LCAkdGhyZWFkcy5QYWdlU2l6ZSwgJHRocmVhZHMuVG90YWxDb3VudCwgJHBhZ2VyT3B0aW9ucyk=</file>
    			<file name="setquery.vm">I3NldCAoJHBvcHVsYXJPbmx5ID0gJGNvcmVfdjJfd2lkZ2V0LkdldEJvb2xWYWx1ZSgncG9wdWxhck9ubHknLCBmYWxzZSkpCiNzZXQgKCRoaWRlRW1wdHkgPSAkY29yZV92Ml93aWRnZXQuR2V0Qm9vbFZhbHVlKCdoaWRlRW1wdHknLCBmYWxzZSkpCiNzZXQgKCRpbmNsdWRlUXVlc3Rpb25zID0gJGNvcmVfdjJfd2lkZ2V0LkdldEJvb2xWYWx1ZSgnaW5jbHVkZVF1ZXN0aW9ucycsIHRydWUpKQojc2V0ICgkc3VwcG9ydFVzZXJGaWx0ZXJpbmcgPSAkY29yZV92Ml93aWRnZXQuR2V0Qm9vbFZhbHVlKCdzdXBwb3J0VXNlckZpbHRlcmluZycsIHRydWUpKQojc2V0ICgkaW5jbHVkZURpc2N1c3Npb25zID0gJGNvcmVfdjJfd2lkZ2V0LkdldEJvb2xWYWx1ZSgnaW5jbHVkZURpc2N1c3Npb25zJywgdHJ1ZSkpCgojc2V0ICgkZm9ydW1Pckdyb3VwID0gJGNvcmVfdjJfcGFnZS5QYXJzZVF1ZXJ5U3RyaW5nKCRjb3JlX3YyX3dpZGdldC5HZXRTdHJpbmdWYWx1ZSgnc2VsZWN0ZWRGb3J1bU9yR3JvdXAnLCAnJykpKQojc2V0ICgkY3VycmVudEZvcnVtID0gJGNvcmVfdjJfZm9ydW0uQ3VycmVudCkKI3NldCAoJGZvcnVtSWQgPSBmYWxzZSkKI3NldCAoJGdyb3VwSWQgPSAgZmFsc2UpCiNzZXQgKCRpbmNsdWRlU3ViR3JvdXBzID0gZmFsc2UpCiNzZXQgKCRpc1JlZ2lzdGVyZWQgPSAkY29yZV92Ml91c2VyLklzUmVnaXN0ZXJlZCgkY29yZV92Ml91c2VyLkFjY2Vzc2luZy5JZCkpCiNzZXQgKCRhcmVTdGlja3lQb3N0c09uVG9wID0gZmFsc2UpCiNzZXQgKCRjb250ZXh0dWFsVXNlciA9ICRjb3JlX3YyX3VzZXIuQ3VycmVudCkKI3NldCAoJGFjY2Vzc2luZ1VzZXIgPSAkY29yZV92Ml91c2VyLkFjY2Vzc2luZykKI3NldCAoJGFjY2Vzc2luZ1VzZXJJc1JlZ2lzdGVyZWQgPSAkY29yZV92Ml91c2VyLklzUmVnaXN0ZXJlZCgkYWNjZXNzaW5nVXNlci5JZCkpCgojc2V0ICgkcGFnZVNpemUgPSAkY29yZV92Ml93aWRnZXQuR2V0SW50VmFsdWUoJ3BhZ2VTaXplJywgMTUpKQojc2V0ICgkcGFnZUluZGV4ID0gJGNvcmVfdjJfdWkuR2V0Q3VycmVudFBhZ2VJbmRleCgpKQoKIyMgR2V0IFdpZGdldC1kZWZhdWx0IGZpbHRlcnMgYW5kIHNvcnRpbmcKI3NldCAoJGZpbHRlciA9ICRjb3JlX3YyX3dpZGdldC5HZXRTdHJpbmdWYWx1ZSgnZmlsdGVyJywgJ2FjdGl2ZScpKQojc2V0ICgkc29ydEJ5ID0gJGNvcmVfdjJfd2lkZ2V0LkdldFN0cmluZ1ZhbHVlKCdzb3J0QnknLCAnZGF0ZVRpbWUnKSkKI3NldCAoJHNvcnRPcmRlciA9ICRjb3JlX3YyX3dpZGdldC5HZXRTdHJpbmdWYWx1ZSgnc29ydE9yZGVyJywgJ2Rlc2NlbmRpbmcnKSkKI3NldCAoJGFnZSA9ICRjb3JlX3YyX3dpZGdldC5HZXRJbnRWYWx1ZSgnYWdlJywgMCkpCgoKCiNpZiAoJGZvcnVtT3JHcm91cC5WYWx1ZSgnRm9ydW0nKSkKCSNzZXQgKCRmb3J1bUlkID0gJGNvcmVfdjJfdXRpbGl0eS5QYXJzZUludCgkZm9ydW1Pckdyb3VwLlZhbHVlKCdGb3J1bScpKSkKCSNpZigkZm9ydW1JZCAmJiAkZm9ydW1JZCA8PSAwICYmICAkY29yZV92Ml9mb3J1bS5DdXJyZW50KQoJICAgCSNzZXQgKCRmb3J1bUlkID0gJGNvcmVfdjJfZm9ydW0uQ3VycmVudC5JZCkKCSNlbmQKCSNzZXQgKCRhcmVTdGlja3lQb3N0c09uVG9wID0gdHJ1ZSkKI2Vsc2VpZiAoJGZvcnVtT3JHcm91cC5WYWx1ZSgnR3JvdXAnKSkKCSNzZXQgKCRpbmNsdWRlU3ViR3JvdXBzID0gJGNvcmVfdjJfdXRpbGl0eS5QYXJzZUJvb2woJGZvcnVtT3JHcm91cC5WYWx1ZSgnSW5jbHVkZVN1Ykdyb3VwcycpKSkKCSNzZXQgKCRncm91cElkID0gJGNvcmVfdjJfdXRpbGl0eS5QYXJzZUludCgkZm9ydW1Pckdyb3VwLlZhbHVlKCdHcm91cCcpKSkKCSNpZigkZ3JvdXBJZCAmJiAkZ3JvdXBJZCA8IDAgJiYgJGNvcmVfdjJfZ3JvdXAuQ3VycmVudCkKCSAgIAkjc2V0ICgkZ3JvdXBJZCA9JGNvcmVfdjJfZ3JvdXAuQ3VycmVudC5JZCkKCSNlbmQKI2Vsc2UKCSNpZiAoJGNvcmVfdjJfZm9ydW0uQ3VycmVudCAmJiAhJGluY2x1ZGVTdWJHcm91cHMpCgkJI3NldCAoJGZvcnVtID0gJGNvcmVfdjJfZm9ydW0uQ3VycmVudCkKCQkjc2V0ICgkZm9ydW1JZCA9ICRmb3J1bS5JZCkKCQkjc2V0ICgkYXJlU3RpY2t5UG9zdHNPblRvcCA9IHRydWUpCgkjZWxzZWlmICgkY29yZV92Ml9ncm91cC5DdXJyZW50KQoJCSNzZXQgKCRncm91cElkID0gJGNvcmVfdjJfZ3JvdXAuQ3VycmVudC5JZCkKCQkjc2V0ICgkYXJlU3RpY2t5UG9zdHNPblRvcCA9IGZhbHNlKQoJI2VuZAojZW5kCgoKI3NldCAoJGhhc1FhRm9ydW1zID0gZmFsc2UpCiNzZXQgKCRoYXNEaXNjdXNzaW9uRm9ydW1zID0gZmFsc2UpCiNpZiAoJGZvcnVtSWQpCgkjc2V0KCRmb3J1bSA9ICRjb3JlX3YyX2ZvcnVtLkdldCgkZm9ydW1JZCkpCgkjZm9yZWFjaCAoJHRocmVhZFR5cGUgaW4gJGZvcnVtLkFsbG93ZWRUaHJlYWRUeXBlcykKCQkjaWYgKCR0aHJlYWRUeXBlID09ICdRdWVzdGlvbkFuZEFuc3dlcicpCgkJI3NldCAoJGhhc1FhRm9ydW1zID0gdHJ1ZSkKCSNlbHNlaWYgKCR0aHJlYWRUeXBlID09ICdEaXNjdXNzaW9uJykKCQkjc2V0KCRoYXNEaXNjdXNzaW9uRm9ydW1zID0gdHJ1ZSkKCQkjZW5kCgkjZW5kCiNlbHNlaWYoJGdyb3VwSWQgPiAwKQoJI3NldCAoJGhhc1FhRm9ydW1zID0gdHJ1ZSkKCSNzZXQgKCRoYXNEaXNjdXNzaW9uRm9ydW1zID0gdHJ1ZSkKI2VuZAoKIyMgT25seSBob25vciBjb29raWVzIG9yIHF1ZXJ5IHN0cmluZ3MgaWYgdXNlciBmaWx0ZXJpbmcgaXMgc3VwcG9ydGVkCiNpZiAoJHN1cHBvcnRVc2VyRmlsdGVyaW5nKQoJIyMgQ29va2llLXN0b3JlZCBmaWx0ZXJzIG92ZXJyaWRlIHdpZGdldCBkZWZhdWx0cwoJIyMgQnV0IHRoZXkgY291bGQgdXNlIHRoZWlyIG93biwgbGVnYWN5LCBub24tc3RhbmRhcmQgbmFtZXMgd2hpY2ggbmVlZCB0byBiZSBtYXBwZWQgdG8gbm9ybWFsaXplZCBBUEkgb3B0aW9ucwoJI3NldCAoJGNvb2tpZUZpbHRlciA9ICRjb3JlX3YyX3BhZ2UuR2V0Q29va2llVmFsdWUoIlRocmVhZEZpbHRlciIpKQoJI2lmICgkY29va2llRmlsdGVyKQoJCSNzZXQgKCRjb29raWVGaWx0ZXIgPSAkY29va2llRmlsdGVyLlRvTG93ZXIoKSkKCQkjaWYgKCRjb29raWVGaWx0ZXIgPT0gJ3VucmVhZG9ubHknKQoJCQkjc2V0ICgkZmlsdGVyID0gJ1VucmVhZCcpCgkJI2Vsc2VpZiAoJGNvb2tpZUZpbHRlciA9PSAndW5hbnN3ZXJlZG9ubHknKQoJCQkjc2V0ICgkZmlsdGVyID0gJ1VuYW5zd2VyZWQnKQoJCSNlbHNlaWYgKCRjb29raWVGaWx0ZXIgPT0gJ3VzZXJmaWx0ZXInKQoJCQkjc2V0ICgkZmlsdGVyID0gJ015VGhyZWFkcycpCgkJI2Vsc2UKCQkJIyMgb3RoZXIgbGVnYWN5IG9wdGlvbnMgaW5jbHVkZWQ6IGFjdGl2ZQoJCQkjIyB3aGljaCBpcyBzdGlsbCB2YWxpZCBhbG9uZ3NpZGUgYW55IG5ldyBvcHRpb25zCgkJCSNzZXQgKCRmaWx0ZXIgPSAkY29va2llRmlsdGVyKQoJCSNlbmQKCSNlbmQKCgkjIyBDdXJyZW50IFF1ZXJ5U3RyaW5ncyBvdmVycmlkZSBib3RoIHdpZGdldCBkZWZhdWx0cyBhbmQgY29va2llcwoJIyMgQnV0IHRoZXkgY291bGQgYWxzbyB1c2VyIHRoZWlyIG93biwgbGVnYWN5LCBub24tc3RhbmRhcmQgbmFtZXMgd2hpY2ggbmVlZCB0byBiZSBtYXBwZWQgdG8gbm9ybWFsaXplZCBBUEkgb3B0aW9ucwoJI3NldCAoJHF1ZXJ5U3RyaW5nRmlsdGVyID0gJGNvcmVfdjJfcGFnZS5HZXRRdWVyeVN0cmluZ1ZhbHVlKCJTb3J0IikpCgkjaWYgKCRxdWVyeVN0cmluZ0ZpbHRlcikKCQkjc2V0ICgkcXVlcnlTdHJpbmdGaWx0ZXIgPSAkcXVlcnlTdHJpbmdGaWx0ZXIuVG9Mb3dlcigpKQoJCSNpZiAoJHF1ZXJ5U3RyaW5nRmlsdGVyID09ICd1bnJlYWRvbmx5JykKCQkJI3NldCAoJGZpbHRlciA9ICdVbnJlYWQnKQoJCSNlbHNlCgkJCSMjIG90aGVyIGxlZ2FjeSBvcHRpb25zIGluY2x1ZGVkOiBhY3RpdmUsIHVuYW5zd2VyZWQsIGFuZCB5b3VyLAoJCQkjIyBlYWNoIG9mIHdoaWNoIGlzIHN0aWxsIHZhbGlkIGFsb25nc2lkZSBhbnkgbmV3IG9wdGlvbnMKCQkJI3NldCAoJGZpbHRlciA9ICRxdWVyeVN0cmluZ0ZpbHRlcikKCQkjZW5kCgoJCSMjIHJlLWFwcGx5IHRoZSBjdXJyZW50IGZpbHRlciBiYWNrIHRvIHRoZSBjb29raWUKCQkkY29yZV92Ml9wYWdlLlNldENvb2tpZVZhbHVlKCJUaHJlYWRGaWx0ZXIiLCAkZmlsdGVyKQoJI2VuZAoKCSNzZXQoJGNvb2tpZVNvcnRPcmRlciA9ICRjb3JlX3YyX3BhZ2UuR2V0Q29va2llVmFsdWUoIlRocmVhZFNvcnRPcmRlciIpKQoJI2lmICgkY29va2llU29ydE9yZGVyKQoJI3NldCgkc29ydE9yZGVyID0gJGNvb2tpZVNvcnRPcmRlcikKCSNlbmQKCSNzZXQgKCRxdWVyeVN0cmluZ1NvcnRPcmRlciA9ICRjb3JlX3YyX3BhZ2UuR2V0UXVlcnlTdHJpbmdWYWx1ZSgiU29ydE9yZGVyIikpCgkjaWYgKCRxdWVyeVN0cmluZ1NvcnRPcmRlcikKCSNzZXQgKCRzb3J0T3JkZXIgPSAkcXVlcnlTdHJpbmdTb3J0T3JkZXIpCgkkY29yZV92Ml9wYWdlLlNldENvb2tpZVZhbHVlKCJUaHJlYWRTb3J0T3JkZXIiLCAkc29ydE9yZGVyKQoJI2VuZAoJI3NldCgkY29va2llU29ydEJ5ID0gJGNvcmVfdjJfcGFnZS5HZXRDb29raWVWYWx1ZSgiVGhyZWFkU29ydEJ5IikpCgkjaWYgKCRjb29raWVTb3J0QnkpCgkjc2V0KCRzb3J0QnkgPSAkY29va2llU29ydEJ5KQoJI2VuZAoJI3NldCAoJHF1ZXJ5U3RyaW5nU29ydEJ5ID0gJGNvcmVfdjJfcGFnZS5HZXRRdWVyeVN0cmluZ1ZhbHVlKCJUaHJlYWRTb3J0QnkiKSkKCSNpZiAoJHF1ZXJ5U3RyaW5nU29ydEJ5KQoJCSNzZXQgKCRzb3J0QnkgPSAkcXVlcnlTdHJpbmdTb3J0QnkpCgkkY29yZV92Ml9wYWdlLlNldENvb2tpZVZhbHVlKCJUaHJlYWRTb3J0QnkiLCAkc29ydEJ5KQoJI2VuZAoKCSNpZiAoJHNvcnRCeS5Ub0xvd2VyKCkgPT0gJ2RhdGV0aW1lJykKCQkjc2V0ICgkc29ydEJ5ID0gJ0xhc3RQb3N0JykKCSNlbmQKCgk8ZGl2IGNsYXNzPSJzb3J0Ij4KCQk8Zm9ybT4KCQk8c3BhbiBjbGFzcz0iYnkiPgoJCQk8c2VsZWN0IGNsYXNzPSJ1aS1zZWxlY3QiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgnc29ydEJ5JykpIiBkYXRhLXF1ZXJ5a2V5PSJUaHJlYWRTb3J0QnkiPgoJCQkJI3NldCAoJHNvcnRCeSA9ICRzb3J0QnkuVG9Mb3dlcigpKQoJCQkJPG9wdGlvbiB2YWx1ZT0iVG9waWMiICNpZigkc29ydEJ5ID09ICJ0b3BpYyIpIHNlbGVjdGVkICNlbmQ+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1ZpZXdUaHJlYWRzX0ZpbHRlckJ5VG9waWMnKTwvb3B0aW9uPgoJCQkJPG9wdGlvbiB2YWx1ZT0iRGF0ZSIgI2lmKCRzb3J0QnkgPT0gImRhdGUiKSBzZWxlY3RlZCAjZW5kPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdDRl9Gb3J1bVRocmVhZExpc3RfU29ydF9EYXRlQXNrZWQnKTwvb3B0aW9uPgoJCQkJPG9wdGlvbiB2YWx1ZT0iTGFzdFBvc3QiICNpZigkc29ydEJ5ID09ICJsYXN0cG9zdCIpIHNlbGVjdGVkICNlbmQ+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0NGX0ZvcnVtVGhyZWFkTGlzdF9Tb3J0X0RhdGVUaW1lJyk8L29wdGlvbj4KCQkJCTxvcHRpb24gdmFsdWU9IlJlcGxpZXMiICNpZigkc29ydEJ5ID09ICJyZXBsaWVzIikgc2VsZWN0ZWQgI2VuZD4kY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQ0ZfRm9ydW1UaHJlYWRMaXN0X1NvcnRfUmVwbGllcycpPC9vcHRpb24+CgkJCQk8b3B0aW9uIHZhbHVlPSJWaWV3cyIgI2lmKCRzb3J0QnkgPT0gInZpZXdzIikgc2VsZWN0ZWQgI2VuZD4kY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQ0ZfRm9ydW1UaHJlYWRMaXN0X1NvcnRfVmlld3MnKTwvb3B0aW9uPgoJCQkJPG9wdGlvbiB2YWx1ZT0iVm90ZXMiICNpZigkc29ydEJ5ID09ICJ2b3RlcyIpIHNlbGVjdGVkICNlbmQ+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0NGX0ZvcnVtVGhyZWFkTGlzdF9Tb3J0X1ZvdGVzJyk8L29wdGlvbj4KCQkJCTxvcHRpb24gdmFsdWU9IlRvdGFsUXVhbGl0eVZvdGVzIiAjaWYoJHNvcnRCeSA9PSAidG90YWxxdWFsaXR5dm90ZXMiKSBzZWxlY3RlZCAjZW5kPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdDRl9Gb3J1bVRocmVhZExpc3RfU29ydF9RdWFsaXR5Vm90ZXMnKTwvb3B0aW9uPgoJCQkJPG9wdGlvbiB2YWx1ZT0iUXVhbGl0eVNjb3JlIiAjaWYoJHNvcnRCeSA9PSAicXVhbGl0eXNjb3JlIikgc2VsZWN0ZWQgI2VuZD4kY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQ0ZfRm9ydW1UaHJlYWRMaXN0X1NvcnRfUXVhbGl0eScpPC9vcHRpb24+CgkJCTwvc2VsZWN0PgoJCTwvc3Bhbj4KCQk8c3BhbiBjbGFzcz0ib3JkZXIiPgoJCQk8c2VsZWN0IGNsYXNzPSJ1aS1zZWxlY3QiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgnc29ydE9yZGVyJykpIiBkYXRhLXF1ZXJ5a2V5PSJTb3J0T3JkZXIiPgoJCQkJI3NldCAoJHNvcnRPcmRlciA9ICRzb3J0T3JkZXIuVG9Mb3dlcigpKQoJCQkJPG9wdGlvbiB2YWx1ZT0iRGVzY2VuZGluZyIgI2lmKCRzb3J0T3JkZXIgPT0gImRlc2NlbmRpbmciKSBzZWxlY3RlZCAjZW5kPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdTb3J0T3JkZXJEcm9wRG93bkxpc3RfRGVzYycpPC9vcHRpb24+CgkJCQk8b3B0aW9uIHZhbHVlPSJBc2NlbmRpbmciICNpZigkc29ydE9yZGVyID09ICJhc2NlbmRpbmciKSBzZWxlY3RlZCAjZW5kPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdTb3J0T3JkZXJEcm9wRG93bkxpc3RfQXNjJyk8L29wdGlvbj4KCQkJPC9zZWxlY3Q+CgkJPC9zcGFuPgoJCTwvZm9ybT4KCTwvZGl2PgoKCTxkaXYgY2xhc3M9InZpZXciPgoJCTxkaXY+CgkJCTxmb3JtPgoJCQk8c2VsZWN0IGNsYXNzPSJ1aS1zZWxlY3QiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgnZmlsdGVyJykpIiBkYXRhLXF1ZXJ5a2V5PSJTb3J0Ij4KCQkJCSNzZXQgKCRmaWx0ZXIgPSAkZmlsdGVyLlRvTG93ZXIoKSkKCQkJCTxvcHRpb24gdmFsdWU9IkFjdGl2ZSIgI2lmICgkZmlsdGVyID09ICJhY3RpdmUiKSBzZWxlY3RlZCAjZW5kPgoJCQkJCSNpZiAoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgJiYgJGhhc1FhRm9ydW1zKQoJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQWxsUmVjZW50JykKCQkJCQkjZWxzZWlmICgkaGFzUWFGb3J1bXMpCgkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdBbGxSZWNlbnRfUXVlc3Rpb25zJykKCQkJCQkjZWxzZQoJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQWxsUmVjZW50X0Rpc2N1c3Npb25zJykKCQkJCQkjZW5kCgkJCQk8L29wdGlvbj4KCQkJCSNpZiAoJGFjY2Vzc2luZ1VzZXJJc1JlZ2lzdGVyZWQpCiAgICAJCQkJPG9wdGlvbiB2YWx1ZT0iVW5yZWFkIiAjaWYgKCRmaWx0ZXIgPT0gInVucmVhZCIpIHNlbGVjdGVkICNlbmQ+CiAgICAJCQkJCSNpZiAoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgJiYgJGhhc1FhRm9ydW1zKQogICAgCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1VucmVhZCcpCiAgICAJCQkJCSNlbHNlaWYgKCRoYXNRYUZvcnVtcykKICAgIAkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdVbnJlYWRfUXVlc3Rpb25zJykKICAgIAkJCQkJI2Vsc2UKICAgIAkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdVbnJlYWRfRGlzY3Vzc2lvbnMnKQogICAgCQkJCQkjZW5kCiAgICAJCQkJPC9vcHRpb24+CiAgICAJCQkjZW5kCiAgICAJCQkjaWYgKCRhY2Nlc3NpbmdVc2VySXNSZWdpc3RlcmVkICYmICEkY29udGV4dHVhbFVzZXIpCiAgICAJCQkJPG9wdGlvbiB2YWx1ZT0iTXlUaHJlYWRzIiAjaWYgKCRmaWx0ZXIgPT0gIm15dGhyZWFkcyIpIHNlbGVjdGVkICNlbmQ+CiAgICAJCQkJCSNpZiAoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgJiYgJGhhc1FhRm9ydW1zKQogICAgCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1lvdXInKQogICAgCQkJCQkjZWxzZWlmICgkaGFzUWFGb3J1bXMpCiAgICAJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnWW91cl9RdWVzdGlvbnMnKQogICAgCQkJCQkjZWxzZQogICAgCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1lvdXJfRGlzY3Vzc2lvbnMnKQogICAgCQkJCQkjZW5kCiAgICAJCQkJPC9vcHRpb24+CiAgICAJCQkJPG9wdGlvbiB2YWx1ZT0iQXV0aG9yZWQiICNpZiAoJGZpbHRlciA9PSAiYXV0aG9yZWQiKSBzZWxlY3RlZCAjZW5kPgogICAgCQkJCQkjaWYgKCRoYXNEaXNjdXNzaW9uRm9ydW1zICYmICRoYXNRYUZvcnVtcykKICAgIAkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdBdXRob3JlZCcpCiAgICAJCQkJCSNlbHNlaWYgKCRoYXNRYUZvcnVtcykKICAgIAkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdBdXRob3JlZF9RdWVzdGlvbnMnKQogICAgCQkJCQkjZWxzZQogICAgCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0F1dGhvcmVkX0Rpc2N1c3Npb25zJykKICAgIAkJCQkJI2VuZAogICAgCQkJCTwvb3B0aW9uPgogICAgCQkJI2VuZAogICAgCQkJI2lmICgkY29udGV4dHVhbFVzZXIgJiYgJGNvbnRleHR1YWxVc2VyLklkICE9ICRhY2Nlc3NpbmdVc2VyLklkKQoJCQkJCTxvcHRpb24gdmFsdWU9IkNvbnRleHR1YWxNeVRocmVhZHMiICNpZiAoJGZpbHRlciA9PSAiY29udGV4dHVhbG15dGhyZWFkcyIpIHNlbGVjdGVkICNlbmQ+CgkJCQkJCSNpZiAoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgJiYgJGhhc1FhRm9ydW1zKQoJCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0NvbnRleHR1YWxfWW91cicpCgkJCQkJCSNlbHNlaWYgKCRoYXNRYUZvcnVtcykKCQkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdDb250ZXh0dWFsX1lvdXJfUXVlc3Rpb25zJykKCQkJCQkJI2Vsc2UKCQkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdDb250ZXh0dWFsX1lvdXJfRGlzY3Vzc2lvbnMnKQoJCQkJCQkjZW5kCgkJCQkJPC9vcHRpb24+CgkJCQkJPG9wdGlvbiB2YWx1ZT0iQ29udGV4dHVhbEF1dGhvcmVkIiAjaWYgKCRmaWx0ZXIgPT0gImNvbnRleHR1YWxhdXRob3JlZCIpIHNlbGVjdGVkICNlbmQ+CgkJCQkJCSNpZiAoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgJiYgJGhhc1FhRm9ydW1zKQoJCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0NvbnRleHR1YWxfQXV0aG9yZWQnKQoJCQkJCQkjZWxzZWlmICgkaGFzUWFGb3J1bXMpCgkJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQ29udGV4dHVhbF9BdXRob3JlZF9RdWVzdGlvbnMnKQoJCQkJCQkjZWxzZQoJCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0NvbnRleHR1YWxfQXV0aG9yZWRfRGlzY3Vzc2lvbnMnKQoJCQkJCQkjZW5kCgkJCQkJPC9vcHRpb24+CgkJCQkjZW5kCgoJCQkJPG9wdGlvbiB2YWx1ZT0iVW5hbnN3ZXJlZCIgI2lmICgkZmlsdGVyID09ICJ1bmFuc3dlcmVkIikgc2VsZWN0ZWQgI2VuZD4KCQkJCQkjaWYgKCRoYXNEaXNjdXNzaW9uRm9ydW1zICYmICRoYXNRYUZvcnVtcykKCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1VuYW5zd2VyZWQnKQoJCQkJCSNlbHNlaWYgKCRoYXNRYUZvcnVtcykKCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1VuYW5zd2VyZWRfUXVlc3Rpb25zJykKCQkJCQkjZWxzZQoJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnVW5hbnN3ZXJlZF9EaXNjdXNzaW9ucycpCgkJCQkJI2VuZAoJCQkJPC9vcHRpb24+CgkJCQk8b3B0aW9uIHZhbHVlPSJBbnN3ZXJlZFdpdGhOb3RWZXJpZmllZCIgI2lmICgkZmlsdGVyID09ICJhbnN3ZXJlZHdpdGhub3R2ZXJpZmllZCIgfHwgJGZpbHRlciA9PSAiYW5zd2VyZWQiKSBzZWxlY3RlZCAjZW5kPgoJCQkJCSNpZiAoJGhhc0Rpc2N1c3Npb25Gb3J1bXMgJiYgJGhhc1FhRm9ydW1zKQoJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQW5zd2VyZWRXaXRoTm90VmVyaWZpZWQnKQoJCQkJCSNlbHNlaWYgKCRoYXNRYUZvcnVtcykKCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Fuc3dlcmVkV2l0aE5vdFZlcmlmaWVkX1F1ZXN0aW9ucycpCgkJCQkJI2Vsc2UKCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Fuc3dlcmVkV2l0aE5vdFZlcmlmaWVkX0Rpc2N1c3Npb25zJykKCQkJCQkjZW5kCgkJCQk8L29wdGlvbj4KCQkJCSNpZiAoJGluY2x1ZGVRdWVzdGlvbnMgJiYgJGhhc1FhRm9ydW1zKQoJCQkJCTxvcHRpb24gdmFsdWU9IkFuc3dlcmVkTm90VmVyaWZpZWQiICNpZiAoJGZpbHRlciA9PSAiYW5zd2VyZWRub3R2ZXJpZmllZCIpIHNlbGVjdGVkICNlbmQ+CgkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdBbnN3ZXJlZE5vdFZlcmlmaWVkJykKCQkJCQk8L29wdGlvbj4KCQkJCSNlbmQKCQkJCTxvcHRpb24gdmFsdWU9Ik5vUmVzcG9uc2UiICNpZiAoJGZpbHRlciA9PSAibm9yZXNwb25zZSIpIHNlbGVjdGVkICNlbmQ+CgkJCQkJI2lmICgkaGFzRGlzY3Vzc2lvbkZvcnVtcyAmJiAkaGFzUWFGb3J1bXMpCgkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdOb1Jlc3BvbnNlJykKCQkJCQkjZWxzZWlmICgkaGFzUWFGb3J1bXMpCgkJCQkJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdOb1Jlc3BvbnNlX1F1ZXN0aW9ucycpCgkJCQkJI2VuZAoJCQkJPC9vcHRpb24+CgkJCTwvc2VsZWN0PgoJCQk8L2Zvcm0+CgkJPC9kaXY+Cgk8L2Rpdj4KCgkjcmVnaXN0ZXJFbmRPZlBhZ2VIdG1sKCkKCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJalF1ZXJ5KGZ1bmN0aW9uKGopewoJCQl2YXIgZmlsdGVyU2VsZWN0ID0gaignIyRjb3JlX3YyX2VuY29kaW5nLkphdmFzY3JpcHRFbmNvZGUoJGNvcmVfdjJfd2lkZ2V0LlVuaXF1ZUlkKCdmaWx0ZXInKSknKSwKCQkJCXNvcnRCeVNlbGVjdCA9IGooJyMkY29yZV92Ml9lbmNvZGluZy5KYXZhc2NyaXB0RW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgnc29ydEJ5JykpJyksCgkJCQlzb3J0T3JkZXJTZWxlY3QgPSBqKCcjJGNvcmVfdjJfZW5jb2RpbmcuSmF2YXNjcmlwdEVuY29kZSgkY29yZV92Ml93aWRnZXQuVW5pcXVlSWQoJ3NvcnRPcmRlcicpKScpOwoKCQkJZnVuY3Rpb24gYWRqdXN0SGFzaCgpIHsKCQkJCXZhciBzZWxlY3QgPSBqKHRoaXMpOwoJCQkJdmFyIGhhc2hBZGp1c3RtZW50ID0ge307CgkJCQloYXNoQWRqdXN0bWVudFtzZWxlY3QuZGF0YSgncXVlcnlrZXknKV0gPSBzZWxlY3QudmFsKCk7CgkJCQlqLnRlbGxpZ2VudC5ldm9sdXRpb24udXJsLmhhc2hEYXRhKGhhc2hBZGp1c3RtZW50LCB7CgkJCQkJcHJlZml4OiAnJGNvcmVfdjJfZW5jb2RpbmcuSmF2YXNjcmlwdEVuY29kZSgkY29yZV92Ml91aS5QYWdlSW5kZXhRdWVyeVN0cmluZ0tleSknCgkJCQl9KTsKCQkJfQoKCQkJZmlsdGVyU2VsZWN0Lm9uKCdjaGFuZ2UnLCBhZGp1c3RIYXNoKTsKCQkJc29ydEJ5U2VsZWN0Lm9uKCdjaGFuZ2UnLCBhZGp1c3RIYXNoKTsKCQkJc29ydE9yZGVyU2VsZWN0Lm9uKCdjaGFuZ2UnLCBhZGp1c3RIYXNoKTsKCQl9KTsKCQk8L3NjcmlwdD4KCSNlbmQKCiNlbmQKCgojIyBBbnkgcmVxdWVzdCBmb3IgY29udGVudCBxdWFsaXR5IHNvcnRpbmcgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgdG8gdGhlIEFQSS1yZWFkeSBTY29yZTpJRCBmb3JtYXQKI2lmICgkc29ydEJ5LlRvTG93ZXIoKSA9PSAnY29udGVudHF1YWxpdHknKQoJI3NldCAoJHNvcnRCeSA9ICJTY29yZToke2NvcmVfdjJfY29udGVudFF1YWxpdHlTY29yZS5TY29yZUlkfSIpCiNlbmQKCgojIyBRdWVyeSBmb3IgdGhyZWFkcwojc2V0ICgkb3B0aW9ucyA9ICIle1NvcnRCeSA9ICckc29ydEJ5JywgU29ydE9yZGVyID0gJyRzb3J0T3JkZXInLCBQb3B1bGFyT25seSA9ICRwb3B1bGFyT25seSwgSW5jbHVkZVN1Ykdyb3VwcyA9ICRpbmNsdWRlU3ViR3JvdXBzLCBQYWdlU2l6ZSA9ICRwYWdlU2l6ZSwgUGFnZUluZGV4ID0gJHBhZ2VJbmRleCwgSW5jbHVkZURpc2N1c3Npb25zID0gJGluY2x1ZGVEaXNjdXNzaW9ucywgSW5jbHVkZVF1ZXN0aW9ucyA9ICRpbmNsdWRlUXVlc3Rpb25zLCBBcmVTdGlja3lQb3N0c09uVG9wID0gJGFyZVN0aWNreVBvc3RzT25Ub3AgfSIpCiNpZiAoJGdyb3VwSWQgJiYgJGdyb3VwSWQgPiAwKQogICAgJG9wdGlvbnMuQWRkKCdHcm91cElkJywkZ3JvdXBJZCkKI2Vsc2VpZigkZm9ydW1JZCAmJiAkZm9ydW1JZCA+MCkKICAgICRvcHRpb25zLkFkZCgnRm9ydW1JZCcsJGZvcnVtSWQpCiNlbmQKCiNpZiAoJGZpbHRlci5Ub0xvd2VyKCkgPT0gJ2NvbnRleHR1YWxteXRocmVhZHMnIHx8ICRmaWx0ZXIuVG9Mb3dlcigpID09ICdjb250ZXh0dWFsYXV0aG9yZWQnKQoJI3NldCAoJGN1cnJlbnRVc2VyID0gJGNvcmVfdjJfdXNlci5DdXJyZW50KQoJI2lmICgkY3VycmVudFVzZXIpCgkJJG9wdGlvbnMuQWRkKCdBdXRob3JJZCcsICRjdXJyZW50VXNlci5JZCkKCQkjaWYgKCRmaWx0ZXIuVG9Mb3dlcigpID09ICdjb250ZXh0dWFsbXl0aHJlYWRzJykKCQkJI3NldCAoJGZpbHRlciA9ICdNeVRocmVhZHMnKQoJCSNlbHNlaWYoJGZpbHRlci5Ub0xvd2VyKCkgPT0gJ2NvbnRleHR1YWxhdXRob3JlZCcpCgkJCSNzZXQgKCRmaWx0ZXIgPSAnQXV0aG9yZWQnKQoJCSNlbmQKCSNlbmQKI2VuZAoKCiNpZiAoJGFnZSA8IDApCiAgICAkb3B0aW9ucy5BZGQoJ0NyZWF0ZWRBZnRlckRhdGUnLCAkY29yZV92Ml91dGlsaXR5LkN1cnJlbnREYXRlLkFkZE1vbnRocygkYWdlKSkKI2VuZA==</file>
    			<file name="sidebar.vm">JGNvcmVfdjJfd2lkZ2V0LkV4ZWN1dGVGaWxlKCdzZXRxdWVyeS52bScpDQoNCiNzZXQgKCR0aHJlYWRzID0gJGNvcmVfdjJfZm9ydW1UaHJlYWQuTGlzdCgkZmlsdGVyLCAkb3B0aW9ucykpDQoNCiNmb3JlYWNoICgkdGhyZWFkIGluICR0aHJlYWRzKQ0KI2JlZm9yZWFsbA0KCTxkaXYgY2xhc3M9ImF2YXRhci1saXN0Ij4NCgk8dWwgY2xhc3M9ImNvbnRlbnQtbGlzdCI+DQojZWFjaA0KCSNzZXQoJGF1dGhvciA9ICR0aHJlYWQuQXV0aG9yKQ0KDQoJPGxpIGNsYXNzPSJjb250ZW50LWl0ZW0iIGRhdGEtaHJlZj0iJGNvcmVfdjJfZW5jb2RpbmcuSHRtbEF0dHJpYnV0ZUVuY29kZSgkdGhyZWFkLlVybCkiPg0KCQk8ZGl2IGNsYXNzPSJhdXRob3IiPg0KCQkJPGRpdiBjbGFzcz0iYXZhdGFyIj4NCgkJCQkkY29yZV92Ml91aS5HZXRSZXNpemVkSW1hZ2VIdG1sKCRhdXRob3IuQXZhdGFyVXJsLCAzNSwgMzUsICIle2JvcmRlcj0nMHB4JywgYWx0PSRhdXRob3IuRGlzcGxheU5hbWUsIFJlc2l6ZU1ldGhvZD0nWm9vbUFuZENyb3AnfSIpDQoJCQk8L2Rpdj4NCgkJCTxhIGhyZWY9IiRjb3JlX3YyX2VuY29kaW5nLkh0bWxBdHRyaWJ1dGVFbmNvZGUoJHRocmVhZC5VcmwpIiBjbGFzcz0iaW50ZXJuYWwtbGluayB2aWV3LWZ1bGwtcG9zdCBuYXZpZ2FibGUgdWktdGlwIiBkYXRhLXRpcD0iJGNvcmVfdjJfZW5jb2RpbmcuSHRtbEF0dHJpYnV0ZUVuY29kZSgkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnVmlldycpKSI+DQoJCQkJPGRpdiBjbGFzcz0iY29udGVudCI+JGNvcmVfdjJfbGFuZ3VhZ2UuVHJ1bmNhdGUoJHRocmVhZC5TdWJqZWN0LCAyMDAsICIuLi4iKTwvZGl2Pg0KCQkJPC9hPg0KCQkJPGRpdiBjbGFzcz0ibWV0YSI+DQoJCQkJI2lmICgkdGhyZWFkLlRocmVhZFR5cGUgPT0gIlF1ZXN0aW9uQW5kQW5zd2VyIikNCgkJCQkJPHNwYW4gY2xhc3M9IiR0aHJlYWQuVGhyZWFkU3RhdHVzIj4NCgkJCQkJCSNpZiAoJHRocmVhZC5UaHJlYWRTdGF0dXMgPT0gJ0Fuc3dlcmVkJykNCgkJCQkJCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnU3RhdHVzX1ZlcmlmaWVkQW5zd2VyJykNCgkJCQkJCSNlbHNlaWYgKCR0aHJlYWQuVGhyZWFkU3RhdHVzID09ICdOb3RBbnN3ZXJlZCcpDQoJCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1N0YXR1c19Ob3RBbnN3ZXJlZCcpDQoJCQkJCQkjZWxzZWlmICgkdGhyZWFkLlRocmVhZFN0YXR1cyA9PSAnQW5zd2VyZWROb3RWZXJpZmllZCcpDQoJCQkJCQkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ1N0YXR1c19TdWdnZXN0ZWRBbnN3ZXInKQ0KCQkJCQkJI2VuZA0KCQkJCQk8L3NwYW4+DQoJCQkJI2VuZA0KCQkJCTxhIGhyZWY9IiRjb3JlX3YyX2VuY29kaW5nLkh0bWxBdHRyaWJ1dGVFbmNvZGUoJHRocmVhZC5VcmwpIiBjbGFzcz0iaW50ZXJuYWwtbGluayB2aWV3LXBvc3QgbmF2aWdhYmxlIj4NCgkJCQkJJGNvcmVfdjJfdWkuQWdvRGF0ZSgkdGhyZWFkLkNyZWF0ZWREYXRlKQ0KCQkJCTwvYT4NCgkJCTwvZGl2Pg0KCQk8L2Rpdj4NCgk8L2xpPg0KI2FmdGVyYWxsDQoJPC91bD4NCgk8L2Rpdj4NCiNub2RhdGENCgkkY29yZV92Ml93aWRnZXQuSGlkZSgpDQojZW5kDQo=</file>
    			<file name="style.less">LnNjYWxlX3JlcGxhY2VkX2ljb24oQHNpemU6IC1ldm8tdGhlbWVjb25maWctdW5pdCgnYmFzZUZvbnRTaXplVmFsdWUnLCAxNHB4KSwgQHBhZGRpbmc6IDBweCkgew0KCXdpZHRoOiBAc2l6ZSArIChAcGFkZGluZyAqIDIpOw0KCWhlaWdodDogQHNpemUgKyAoQHBhZGRpbmcgKiAyKTsNCgkmOmJlZm9yZSB7DQoJCXdpZHRoOiBAc2l6ZSArIChAcGFkZGluZyAqIDIpOw0KCQloZWlnaHQ6IEBzaXplICsgKEBwYWRkaW5nICogMik7DQoJCXRvcDogQHBhZGRpbmc7DQoJCWZvbnQtc2l6ZTogQHNpemU7DQoJCWxpbmUtaGVpZ2h0OiBAc2l6ZTsNCgl9DQp9DQouY29udGVudC1mcmFnbWVudC50aHJlYWQtbGlzdCB7DQogICAgLmNvbnRlbnQtbGlzdC50YWJ1bGFyIHsNCgkJdGFibGUtbGF5b3V0OiBmaXhlZDsNCgkJd2lkdGg6IDEwMCU7DQogICAgICAgID4gLmNvbnRlbnQtaXRlbSB7DQogICAgCQkuY2VsbCB7IHdpZHRoOiAxMCUgfQ0KICAgIAkJLmNlbGwuaWNvbiB7IHdpZHRoOiAzJSB9DQogICAgCQkuY2VsbC5uYW1lIHsgd2lkdGg6IDU3JTsgfQ0KICAgIAkJLmNlbGwubGF0ZXN0IHsgd2lkdGg6IDIwJTsgbWF4LXdpZHRoOiBub25lOyB9DQogICAgICAgIH0NCgl9DQogICAgDQoJLmNvbnRlbnQtbGlzdC5jb250ZW50ID4gLmNvbnRlbnQtaXRlbSB7DQoJCSYucHJldmlldyB7IGRpc3BsYXk6IG5vbmU7IH0NCgkJJi5wcmV2aWV3LnByZXZpZXdpbmcgeyBkaXNwbGF5OiB0YWJsZS1yb3c7IH0NCgkJLmljb24gew0KCQkJc3BhbiwgYSB7DQoJCQkJJi5kaXNjdXNzaW9uIHsNCgkJCQkJY29sb3I6IGNvbnRyYXN0KC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCBkYXJrZW4oLWV2by10aGVtZWNvbmZpZy1jb2xvcignZm9yZWdyb3VuZENvbG9yJywgIzExMTcxQSksIDc1JSksIGxpZ2h0ZW4oLWV2by10aGVtZWNvbmZpZy1jb2xvcignZm9yZWdyb3VuZENvbG9yJywgIzExMTcxQSksIDc1JSkpOw0KCQkJCQkuc2NhbGVfcmVwbGFjZWRfaWNvbigtZXZvLXRoZW1lY29uZmlnLXVuaXQoJ2Jhc2VGb250U2l6ZVZhbHVlJywgMTRweCkgKiAxLjIsIDEwcHggLyAyKTsNCgkJCQl9DQoJCQkJJi52ZXJpZmllZCB7DQoJCQkJCWNvbG9yOiAtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdzdGF0ZVBvc2l0aXZlJywgIzlDQ0M2NSk7DQoJCQkJCS5zY2FsZV9yZXBsYWNlZF9pY29uKC1ldm8tdGhlbWVjb25maWctdW5pdCgnYmFzZUZvbnRTaXplVmFsdWUnLCAxNHB4KSAqIDEuNSwgMTBweCAvIDIpOw0KCQkJCQl0b3A6IC0zcHg7DQoJCQkJfQ0KCQkJCSYuc3VnZ2VzdGVkIHsNCgkJCQkJY29sb3I6IC1ldm8tdGhlbWVjb25maWctY29sb3IoJ3N0YXRlUGVuZGluZycsICNGRkIzMDApOw0KCQkJCQkuc2NhbGVfcmVwbGFjZWRfaWNvbigtZXZvLXRoZW1lY29uZmlnLXVuaXQoJ2Jhc2VGb250U2l6ZVZhbHVlJywgMTRweCkgKiAxLjUsIDEwcHggLyAyKTsNCgkJCQkJdG9wOiAtM3B4Ow0KCQkJCX0NCgkJCQkmLnVuYW5zd2VyZWQgew0KCQkJCQljb2xvcjogY29udHJhc3QoLWV2by10aGVtZWNvbmZpZy1jb2xvcignZm9yZWdyb3VuZENvbG9yJywgIzExMTcxQSksIGRhcmtlbigtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdmb3JlZ3JvdW5kQ29sb3InLCAjMTExNzFBKSwgNzUlKSwgbGlnaHRlbigtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdmb3JlZ3JvdW5kQ29sb3InLCAjMTExNzFBKSwgNzUlKSk7DQoJCQkJCS5zY2FsZV9yZXBsYWNlZF9pY29uKC1ldm8tdGhlbWVjb25maWctdW5pdCgnYmFzZUZvbnRTaXplVmFsdWUnLCAxNHB4KSAqIDEuMiwgMTBweCAvIDIpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQkuY29udGVudC5hYmJyZXZpYXRlZCAgew0KCQkJLm5hbWUgew0KCQkJCWZvbnQtc2l6ZTogMjRweDsNCgkJCQltYXJnaW4tcmlnaHQ6IDI1NXB4Ow0KCQkJfQ0KCQkJLmF1dGhvciB7DQoJCQkJdG9wOiAtNnB4Ow0KCQkJCS5hdmF0YXIgew0KCQkJCQl0b3A6IDZweDsNCgkJCQl9DQoJCQl9DQoJCQkuYXV0aG9yLA0KCQkJLmNvbnRlbnQtZnJhZ21lbnQudGhyZWFkLWxpc3QgLmNvbnRlbnQuYWJicmV2aWF0ZWQgLmF0dHJpYnV0ZXMgew0KCQkJCXdpZHRoOiAyNDBweDsNCgkJCX0NCgkJCS5hdHRyaWJ1dGVzIHsNCgkJCQlwb3NpdGlvbjogcmVsYXRpdmU7DQoJCQkJdG9wOiAtNnB4Ow0KCQkJfQ0KCQkJLnJlcGx5LXZvdGVzIHsNCgkJCQlhIHsNCgkJCQkJY29sb3I6IGRhcmtlbihjb250cmFzdCgtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdmb3JlZ3JvdW5kQ29sb3InLCAjMTExNzFBKSwgZGFya2VuKC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCA2MiUpLCBsaWdodGVuKC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCA2MiUpKSwgMTAlKTsNCgkJCQkJJjpiZWZvcmUgew0KCQkJCQkJZm9udC1zaXplOiAtZXZvLXRoZW1lY29uZmlnLXVuaXQoJ2Jhc2VGb250U2l6ZVZhbHVlJywgMTRweCkgKiAuOTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCgkudWktZm9ydW1xdWFsaXR5dm90ZXMgew0KCQkmW2RhdGEtc2NvcmU9IjAiXSB7DQoJCQlkaXNwbGF5OiBub25lOw0KCQl9DQoJCS50aHJlYWQtdm90ZSB7DQoJCQlkaXNwbGF5OiBpbmxpbmU7DQoJCX0NCgkJYS52b3RlLCAudm90ZS1pbmRpY2F0b3Igew0KCQkJZGlzcGxheTogbm9uZTsNCgkJfQ0KCQkuc2NvcmUgew0KCQkJY3Vyc29yOiBwb2ludGVyOw0KCQkJcG9zaXRpb246IHJlbGF0aXZlOw0KCQkJZm9udC1zaXplOiAtZXZvLXRoZW1lY29uZmlnLXVuaXQoJ2Jhc2VGb250U2l6ZVZhbHVlJywgMTRweCkgKi44Ow0KCQkJdG9wOiAtMXB4Ow0KCQkJcGFkZGluZy1sZWZ0OiA1cHg7DQoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOw0KCQkJbWFyZ2luLWxlZnQ6IDFweDsNCgkJCWNvbG9yOiAtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdmb3JlZ3JvdW5kQ29sb3InLCAjMTExNzFBKTsNCgkJfQ0KCX0NCn0NCg0KQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAtZXZvLXRoZW1lY29uZmlnLXVuaXQoJ21pbldpZHRoJywgNjcwcHgpKSB7DQoJLmNvbnRlbnQtZnJhZ21lbnQudGhyZWFkLWxpc3Qgew0KCQkuY29udGVudC1saXN0LnRhYnVsYXIgLmNvbnRlbnQtaXRlbSB7DQoJCQlwb3NpdGlvbjogcmVsYXRpdmU7DQoJCQlkaXNwbGF5OiBibG9jazsNCg0KCQkJJi5wcmV2aWV3aW5nIHsNCgkJCQlib3JkZXItYm90dG9tOiAxcHggc29saWQgbGlnaHRlbihjb250cmFzdCgtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdmb3JlZ3JvdW5kQ29sb3InLCAjMTExNzFBKSwgZGFya2VuKC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCA2MiUpLCBsaWdodGVuKC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCA2MiUpKSwgMjAlKTsNCgkJCX0NCg0KCQkJJi5wcmV2aWV3IHsgZGlzcGxheTogbm9uZTsgfQ0KCQkJJi5wcmV2aWV3LnByZXZpZXdpbmcgew0KCQkJCWRpc3BsYXk6IGJsb2NrOw0KCQkJCS5jZWxsLmNvbnRlbnQgew0KCQkJCQkuY29udGVudC5pbmxpbmUgew0KCQkJCQkJbWFyZ2luOiAwOw0KCQkJCQl9DQoJCQkJCWJvcmRlci1ib3R0b20td2lkdGg6IDA7DQoJCQkJfQ0KCQkJCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaWdodGVuKGNvbnRyYXN0KC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCBkYXJrZW4oLWV2by10aGVtZWNvbmZpZy1jb2xvcignZm9yZWdyb3VuZENvbG9yJywgIzExMTcxQSksIDYyJSksIGxpZ2h0ZW4oLWV2by10aGVtZWNvbmZpZy1jb2xvcignZm9yZWdyb3VuZENvbG9yJywgIzExMTcxQSksIDYyJSkpLCAxNSUpOw0KCQkJfQ0KDQoJCQkuY2VsbCB7IHBhZGRpbmctbGVmdDogKC1ldm8tdGhlbWVjb25maWctdW5pdCgnYmFzZUZvbnRTaXplVmFsdWUnLCAxNHB4KSAqIDEuMikgKyAoMTBweCAqIDEuNSk7IHdpZHRoOiBhdXRvOyB9DQoJCQkuY2VsbC5pY29uIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDVweDsgbGVmdDogMDsgcGFkZGluZy1sZWZ0OiAwOyB3aWR0aDogYXV0bzsgfQ0KCQkJLmNlbGwubmFtZSB7IG1pbi1oZWlnaHQ6ICgtZXZvLXRoZW1lY29uZmlnLXVuaXQoJ2Jhc2VGb250U2l6ZVZhbHVlJywgMTRweCkgKiAxLjIpICsgMTBweDsgcGFkZGluZy10b3A6IDA7IHdpZHRoOiBhdXRvOyB9DQoJCQkuY2VsbC5zdXBwbGVtZW50YXJ5IHsgZGlzcGxheTogbm9uZTsgfQ0KCQkJLmNlbGwubGF0ZXN0IHsgd2lkdGg6IGF1dG87IH0NCgkJCS5jZWxsLmxhdGVzdCBiciB7IGRpc3BsYXk6IGlubGluZTsgbWFyZ2luOiAwIC4zM2V4IDAgMDsgcGFkZGluZzogMDsgY29udGVudDogJyAnOyB9DQoJCX0NCgl9DQp9</file>
    		</files>
    	</scriptedContentFragment>
    </scriptedContentFragments>

  • Oh sweet. I'll enable this sometime soon and have a happy user. Thank you!