Friend requests are not visible if the request includes a long friendship message

User A sends User B a friend request, and includes a long message in the request


User B sees the message in notifications, with the first few words showing in the notification


User B clicks on the request and sees that User A sent a request, but no way to see the full-text of the notification.

I'm not able to see any method in which to allow users to see the full-text of the request longer than 50 characters in-app (it shows the full text in the notification email). The theme's widget settings doesn't allow for it, it's not in the Admin > Membership > Friendship Options. Content in this message can include important information about why you want to connect with a fellow member of the community, and the requesting user expects that the full message will be available. Does anyone have any ideas? 

  • Thank you for bringing this to attention. While the full friendship request message is included in the email, that's currently the only place it's shown. The notification type truncates the request message when rendered as part of the notification, itself.

    I've logged an issue to review this. 

    TE-15884: Friendship request messages not presented without truncation in the UI

    Completed for 12.1.1, 11.1.11, 12.0.5

    As a workaround, the Friendship List widget can be updated to show the full request messages alongside the pending friendship requests. To accommodate the content, the list can be adjusted from thumbnails to a content list. 

    With a few updates to the Friendship List widget's review.vm attachment, it can render as:

    I've attached this customized version of the widget:

    <scriptedContentFragments>
    	<scriptedContentFragment name="${resource:Core_FriendshipList_Name}" version="11.0.0.0" description="${resource:Core_FriendshipList_Description}" instanceIdentifier="133a73e034ea4500939f774b78d3d683" theme="" isCacheable="true" varyCacheByUser="true" showHeaderByDefault="true" cssClass="friendship-list" lastModified="2020-01-14 16:06:49Z">
    		<contentScript language="Velocity"><![CDATA[$core_v2_page.AddLink('stylesheet', $core_v2_widget.GetExecutedFileUrl('style.less'), "%{ Position = 'AfterTheme' }")
    
    #set ($queryType = $core_v2_widget.GetStringValue('queryType', 'currentUser'))
    #set ($enablePaging = $core_v2_widget.GetBoolValue('enablePaging', true))
    
    #set ($targetUser = false)
    #if ($queryType == "accessingUser")
    	#set ($targetUser = $core_v2_user.Accessing)
    #elseif ($queryType == "currentUser")
    	#set ($targetUser = $core_v2_user.Current)
    #end
    
    ## if there is no accessing or current user, hide widget
    #if (!$targetUser)
    	$core_v2_widget.Hide();
    #end
    
    #set ($isUserAccessing = false)
    #if ($targetUser.Id == $core_v2_user.Accessing.Id)
    	#set ($isUserAccessing = true)
    #end
    
    #set ($viewType = "Friends")
    #set ($viewType = $core_v2_page.GetQueryStringValue('Show'))
    
    $core_v2_widget.ExecuteFile('inSidebar.vm')
    
    #if ($isUserAccessing && !$inSidebar && $enablePaging)
    	<div id="$core_v2_widget.UniqueId('edit-form')" style="display: none;">
    		<fieldset>
    			<div id="$core_v2_widget.UniqueId('edit-mode-message')"></div>
    			<ul class="field-list">
    				<li class="field-item submit-button">
    					<span class="field-item-input">
    						<a href="javascript:void(0);" class="internal-link disabled button unfriend-all" data-confirmation="$core_v2_encoding.HtmlAttributeEncode($core_v2_language.GetResource('unfriend_all_confirmation'))" data-success="$core_v2_encoding.HtmlAttributeEncode($core_v2_language.GetResource('unfriend_all_success'))">$core_v2_language.GetResource('unfriend_all')</a>
    						<a href="javascript:void(0);" class="internal-link disabled button follow-all" data-confirmation="$core_v2_encoding.HtmlAttributeEncode($core_v2_language.GetResource('follow_all_confirmation'))" data-success="$core_v2_encoding.HtmlAttributeEncode($core_v2_language.GetResource('follow_all_success'))">$core_v2_language.GetResource('follow_all')</a>
    						<a href="javascript:void(0);" class="internal-link disabled button unfollow-all" data-confirmation="$core_v2_encoding.HtmlAttributeEncode($core_v2_language.GetResource('unfollow_all_confirmation'))" data-success="$core_v2_encoding.HtmlAttributeEncode($core_v2_language.GetResource('unfollow_all_success'))">$core_v2_language.GetResource('unfollow_all')</a>
    						<a href="javascript:void(0);" class="internal-link button done">$core_v2_language.GetResource('done')</a>
    						<span class="processing" style="visibility: hidden;"><span class="ui-loading" data-width="45" data-height="15"></span></span>
    					</span>
    				</li>
    			</ul>
    		</fieldset>
    	</div>
    
    	<div class="navigation-list navigation">
    		<ul>
    			<li class="navigation-list-item"><a href="#" class="internal-link edit-mode-toggle" id="$core_v2_widget.UniqueId('edit-mode')">$core_v2_language.GetResource('edit')</a></li>
    		</ul>
    	</div>
    
    	<div class="view">
    		<div>
    			<form>
    			<select class="ui-select" data-update="$core_v2_encoding.HtmlAttributeEncode($core_v2_page.AdjustQueryString($core_v2_page.Url, "Show=OPTIONVALUE"))">
    				<option value="Friends"#if($viewType == 'Friends') selected #end">$core_v2_language.GetResource('Friends')</option>
    				<option value="Review"#if($viewType == 'Review') selected #end>$core_v2_language.GetResource('Friends_RequestsReview')</option>
    				<option value="Pending"#if($viewType == 'Pending') selected #end>$core_v2_language.GetResource('Friends_YourRequests')</option>
    				<option value="Following"#if($viewType == 'Following') selected #end>$core_v2_language.GetResource('Core_FriendshipList_Filter_Following')</option>
    				<option value="Followers"#if($viewType == 'Followers') selected #end>$core_v2_language.GetResource('Followers')</option>
    				<option value="Recommendations"#if($viewType == 'Recommendations') selected #end>$core_v2_language.GetResource('Recommendations')</option>
    			</select>
    			</form>
    		</div>
    	</div>
    #end
    
    $core_v2_widget.ExecuteFile('list.vm')
    
    #if ($inSidebar || !$enablePaging)
    	#if ($queryType == 'accesingUser')
    		#set($remaining = $total - $pageSize)
    		#set($url = false)
    		#set($url = $core_v2_urls.Friends($core_v2_user.Acessing.Id))
    		#if ($url)
    			#if ($remaining == 1)
    				<a href="$core_v2_encoding.HtmlAttributeEncode($url)">$core_v2_language.FormatString($core_v2_language.GetResource('And_One_More'), $core_v2_language.FormatNumber($remaining))</a>
    			#elseif ($remaining > 1)
    				<a href="$core_v2_encoding.HtmlAttributeEncode($url)">$core_v2_language.FormatString($core_v2_language.GetResource('And_Multiple_More'), $core_v2_language.FormatNumber($remaining))</a>
    			#end
    		#end
    	#elseif($queryType == 'currentUser')
    		#set($remaining = $total - $pageSize)
    		#set($url = false)
    		#set($url = $core_v2_urls.Friends($core_v2_user.Current.Id))
    		#if ($url)
    			#if ($remaining == 1)
    				<a href="$core_v2_encoding.HtmlAttributeEncode($url)">$core_v2_language.FormatString($core_v2_language.GetResource('And_One_More'), $core_v2_language.FormatNumber($remaining))</a>
    			#elseif ($remaining > 1)
    				<a href="$core_v2_encoding.HtmlAttributeEncode($url)">$core_v2_language.FormatString($core_v2_language.GetResource('And_Multiple_More'), $core_v2_language.FormatNumber($remaining))</a>
    			#end
    		#end
    	#end
    	#registerEndOfPageHtml ()
    		<script type="text/javascript">
    		jQuery(function() {
    			jQuery('#$core_v2_encoding.JavascriptEncode($core_v2_widget.UniqueId('thumbnails'))').on('click', '.content-item', function(e){
    				window.location = jQuery(this).data('url');
    			});
    		});
    		</script>
    	#end
    #else
    	#registerEndOfPageHtml('telligent.evolution.widgets.friendshipList')
    		<script type="text/javascript" src="$core_v2_encoding.HtmlAttributeEncode($core_v2_widget.GetFileUrl('ui.js'))"></script>
    	#end
    	#registerEndOfPageHtml()
    		<script type="text/javascript">
    		//<!--31154f2f1a944c64b0e644f1022f506c-cdata-start-->
    		jQuery(function()
    		{
    			jQuery.telligent.evolution.widgets.friendshipList.register({
    				wrapper: jQuery('#$core_v2_widget.WrapperElementId'),
    				loadUrl: '$core_v2_encoding.JavascriptEncode($core_v2_widget.GetExecutedFileUrl('list.vm'))',
    				pageIndexKey: '$core_v2_encoding.JavascriptEncode($core_v2_ui.PageIndexQueryStringKey)',
    				thumbnailsContainer: jQuery('#$core_v2_encoding.JavascriptEncode($core_v2_widget.UniqueId('thumbnails'))'),
    				hasMore: '$hasMore',
    				editMode: jQuery('#$core_v2_widget.UniqueId('edit-mode')'),
    				editForm: jQuery('#$core_v2_widget.UniqueId('edit-form')'),
    				editModeMessage: jQuery('#$core_v2_widget.UniqueId('edit-mode-message')'),
    				selectedUserMessage: '$core_v2_encoding.JavascriptEncode($core_v2_language.GetResource('selected_user'))',
    				selectedUsersMessage: '$core_v2_encoding.JavascriptEncode($core_v2_language.GetResource('selected_users'))',
    				editMessage: '$core_v2_encoding.JavascriptEncode($core_v2_language.GetResource('edit'))',
    				cancelMessage: '$core_v2_encoding.JavascriptEncode($core_v2_language.GetResource('cancel'))',
    				searchUrl: '$core_v2_encoding.JavaScriptEncode($core_v2_widget.GetExecutedFileUrl('search.vm'))',
    				searchFilterText: '$core_v2_encoding.JavascriptEncode($core_v2_language.FormatString($core_v2_language.GetResource('friends_filter'), $targetUser.DisplayName))',
    				searchFilterDefault: #if($core_v2_urls.Current == 'Friends') true #else false #end
    			});
    		});
    		//<!--31154f2f1a944c64b0e644f1022f506c-cdata-end-->
    		</script>
    	#end
    #end]]></contentScript>
    		<headerScript language="Velocity"><![CDATA[
    $core_v2_widget.ApplyTokens($core_v2_widget.GetStringValue('fragmentHeader', '${resource:Core_FriendshipList_Name}'))
    		]]></headerScript>
    		<configuration><![CDATA[<propertyGroup id="options" labelResourceName="Options">
    	<property id="fragmentHeader" labelResourceName="CF_Title" defaultValue="${resource:Core_FriendshipList_Name}" dataType="String" template="core_v2_tokenizedString" />
    	<property id="queryType" labelResourceName="Core_FriendshipList_QueryType" defaultValue="currentUser" dataType="String">
    		<propertyValue value="currentUser" labelResourceName="Core_FriendshipList_QueryType_CurrentUser" />
    		<propertyValue value="accessingUser" labelResourceName="Core_FriendshipList_QueryType_AccessingUser" />
    	</property>
    	<property id="pageSize" labelResourceName="Pagesize" defaultValue="21" dataType="Int">
    		<propertyRule name="minmax" min="1" max="100" />
    	</property>
    	<property id="enablePaging" labelResourceName="EnablePaging" defaultValue="True" dataType="Bool" />
    </propertyGroup>]]></configuration>
    		<languageResources><![CDATA[<language key="en-us">
      <resource name="And_Multiple_More">And {0} more...</resource>
      <resource name="And_One_More">And 1 more...</resource>
      <resource name="ApproveDeny">Accept/Reject</resource>
      <resource name="cancel">Cancel</resource>
      <resource name="CF_Title">Widget Title</resource>
      <resource name="Connect">Connect</resource>
      <resource name="Core_FriendshipList_Description">Displays a list of pending and approved ${friendships_lowercase}.</resource>
      <resource name="Core_FriendshipList_Filter_Following">Following</resource>
      <resource name="Core_FriendshipList_Name">${friendship_propercase} List</resource>
      <resource name="Core_FriendshipList_QueryType">Show ${friends_propercase} For:</resource>
      <resource name="Core_FriendshipList_QueryType_AccessingUser">Accessing User</resource>
      <resource name="Core_FriendshipList_QueryType_CurrentUser">Current Contextual User</resource>
      <resource name="Core_FriendshipList_Title_Friends">${friends_propercase}</resource>
      <resource name="done">Done</resource>
      <resource name="edit">Edit</resource>
      <resource name="EditProfile_Friends_None">No users have been added to {0}'s ${friends_lowercase} list.</resource>
      <resource name="EnablePaging">Enable paging</resource>
      <resource name="follow_all">Follow all</resource>
      <resource name="follow_all_confirmation">Are you sure you want to follow all of the selected people?</resource>
      <resource name="follow_all_success">You are now following the selected people.</resource>
      <resource name="Followers">Followers</resource>
      <resource name="Followers_None">You do not have any followers yet.</resource>
      <resource name="Following_None">You are not following anyone yet.</resource>
      <resource name="FriendRequest_Accepted_Confirmation">You are now ${friends_lowercase} with {0}.</resource>
      <resource name="FriendRequest_Accepted_Notification">You have accepted a ${friendship_lowercase} request from {0}.</resource>
      <resource name="FriendRequest_NoneToReview">You do not have any ${friendship_lowercase} requests to review.</resource>
      <resource name="FriendRequest_Rejected_Notification">You have denied a ${friendship_lowercase} request from {0}.</resource>
      <resource name="Friends">${friends_propercase}</resource>
      <resource name="friends_filter">{0}'s Friends</resource>
      <resource name="Friends_None">No users have been added to your ${friends_lowercase} list.</resource>
      <resource name="Friends_RequestsReview">Requests to Review</resource>
      <resource name="Friends_YourRequests">Your Requests</resource>
      <resource name="ignore_user_recommendation">Ignore recommendation</resource>
      <resource name="more">More</resource>
      <resource name="no_search_matches_found">No matching friends were found.</resource>
      <resource name="Options">Options</resource>
      <resource name="Pagesize">Number of friends to display</resource>
      <resource name="Recommendations">Find Friends</resource>
      <resource name="Recommendations_None">You do not have any suggestions to review.</resource>
      <resource name="selected_user">{0} person selected</resource>
      <resource name="selected_users">{0} people selected</resource>
      <resource name="unfollow_all">Unfollow all</resource>
      <resource name="unfollow_all_confirmation">Are you sure you want to stop following all of the selected people?</resource>
      <resource name="unfollow_all_success">You are no longer following any of the selected people.</resource>
      <resource name="unfriend_all">Unfriend all</resource>
      <resource name="unfriend_all_confirmation">Are you sure you want to remove all of the selected friendships?</resource>
      <resource name="unfriend_all_success">The selected friendships have been removed.</resource>
    </language>]]></languageResources>
    		<additionalCssScript language="Unknown" />
    		<files>
    			<file name="followers.vm">I3NldCAoJHVzZXJzID0gJGNvcmVfdjJfZm9sbG93ZXIuTGlzdCgiJXsgVXNlcklkID0gJHRhcmdldFVzZXIuSWQsIFBhZ2VTaXplID0gJHBhZ2VTaXplLCBQYWdlSW5kZXggPSAkcGFnZUluZGV4LCBTb3J0Qnk9J0Rpc3BsYXlOYW1lJywgU29ydE9yZGVyPSdBc2NlbmRpbmcnIH0iKSkNCiNzZXQoJHRvdGFsID0gJHVzZXJzLlRvdGFsQ291bnQpDQoNCiNzZXQgKCRoYXNNb3JlID0gZmFsc2UpDQojc2V0ICgkY3VycmVudFBhZ2VkUXVhbnRpdHkgPSAoJHVzZXJzLlBhZ2VJbmRleCArIDEpICogJHVzZXJzLlBhZ2VTaXplKQ0KI2lmICgkdXNlcnMuVG90YWxDb3VudCA+ICRjdXJyZW50UGFnZWRRdWFudGl0eSkNCgkJI3NldCAoJGhhc01vcmUgPSB0cnVlKQ0KI2VuZA0KDQojZm9yZWFjaCAoJHVzZXIgaW4gJHVzZXJzKQ0KI2JlZm9yZWFsbA0KCTxmb3JtPg0KCTxkaXYgY2xhc3M9ImNvbnRlbnQtbGlzdCB0aHVtYm5haWwgdWktbWFzb25yeSBtYXJnaW4tdG9wIiBpZD0iJGNvcmVfdjJfZW5jb2RpbmcuSHRtbEF0dHJpYnV0ZUVuY29kZSgkY29yZV92Ml93aWRnZXQuVW5pcXVlSWQoJ3RodW1ibmFpbHMnKSkiIGRhdGEtY29sdW1uY2xhc3M9InRodW1ibmFpbC1jb2x1bW4iPg0KI2VhY2gNCgk8ZGl2IGNsYXNzPSJjb250ZW50LWl0ZW0gY29udGVudCB0aHVtYm5haWwiIGRhdGEtaGFzbW9yZT0iJGhhc01vcmUiIGRhdGEtdXNlcmlkPSIkdXNlci5JZCIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGRhdGEtdXJsPSIkIWNvcmVfdjJfZW5jb2RpbmcuSHRtbEF0dHJpYnV0ZUVuY29kZSgkdXNlci5Qcm9maWxlVXJsKSI+DQoJCTxkaXYgY2xhc3M9ImF2YXRhciI+DQoJCQkkY29yZV92Ml91aS5HZXRSZXNpemVkSW1hZ2VIdG1sKCR1c2VyLkF2YXRhclVybCwgMTQwLCAxNDAsICIle2FsdD0kdXNlci5EaXNwbGF5TmFtZSxib3JkZXI9JzAnLFJlc2l6ZU1ldGhvZCA9ICdab29tQW5kQ3JvcCd9IikNCgkJCQkJPC9kaXY+DQoJCQkJCTxoMiBjbGFzcz0ibmFtZSI+DQoJCQkJCQkJJHVzZXIuRGlzcGxheU5hbWUNCgkJCQkJPC9oMj4NCgkJPGRpdiBjbGFzcz0iYWN0aW9ucyI+DQoJCQk8ZGl2IGNsYXNzPSIgbmF2aWdhdGlvbi1saXN0IHVpLWxpbmtzIiBkYXRhLW1pbmxpbmtzPSIwIiBkYXRhLW1heGxpbmtzPSIwIiBkYXRhLWRpcmVjdGlvbj0iaG9yaXpvbnRhbCI+DQoJCQkJPHVsPg0KCQkJCQkjZm9yZWFjaCgkYWN0aW9uIGluICRjb3JlX3YyX3VzZXIuTGlzdEFjdGlvbkxpbmtzKCR1c2VyLklkKSkNCgkJCQkJCTxsaSBjbGFzcz0ibmF2aWdhdGlvbi1saXN0LWl0ZW0iPiRhY3Rpb24uSHRtbDwvbGk+DQoJCQkJCSNlbmQNCgkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtaXRlbSI+DQoJCQkJCQkJCQkJPGEgaHJlZj0iIyIgZGF0YS1tb3JlPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdDb25uZWN0Jyk8L2E+DQoJCQkJCQkJCTwvbGk+DQoJCQkJCTxsaSBjbGFzcz0ibmF2aWdhdGlvbi1saXN0LXRlbSI+DQoJCQkJCQkJCQkJCQk8YSBocmVmPSIjIiBkYXRhLWNhbmNlbD4kY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnY2FuY2VsJyk8L2E+DQoJCQkJCQkJCQkJPC9saT4NCgkJCQk8L3VsPg0KCQkJPC9kaXY+DQoJCTwvZGl2Pg0KCQk8ZGl2IGNsYXNzPSJlZGl0LW1vZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+DQoJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIC8+DQoJCTwvZGl2Pg0KCTwvZGl2Pg0KI2FmdGVyYWxsDQoJPC9kaXY+DQoJPC9mb3JtPg0KI25vZGF0YQ0KCTxkaXYgY2xhc3M9Im1lc3NhZ2Ugbm9yZWNvcmRzIj4NCgkJJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0ZvbGxvd2Vyc19Ob25lJykNCgk8L2Rpdj4NCiNlbmQ=</file>
    			<file name="following.vm">I3NldCAoJHVzZXJzID0gJGNvcmVfdjJfZm9sbG93aW5nLkxpc3QoIiV7IEZvbGxvd2VySWQgPSAkdGFyZ2V0VXNlci5JZCwgUGFnZVNpemUgPSAkcGFnZVNpemUsIFBhZ2VJbmRleCA9ICRwYWdlSW5kZXgsIFNvcnRCeT0nRGlzcGxheU5hbWUnLCBTb3J0T3JkZXI9J0FzY2VuZGluZycgfSIpKQ0KI3NldCgkdG90YWwgPSAkdXNlcnMuVG90YWxDb3VudCkNCg0KI3NldCAoJGhhc01vcmUgPSBmYWxzZSkNCiNzZXQgKCRjdXJyZW50UGFnZWRRdWFudGl0eSA9ICgkdXNlcnMuUGFnZUluZGV4ICsgMSkgKiAkdXNlcnMuUGFnZVNpemUpDQojaWYgKCR1c2Vycy5Ub3RhbENvdW50ID4gJGN1cnJlbnRQYWdlZFF1YW50aXR5KQ0KCQkjc2V0ICgkaGFzTW9yZSA9IHRydWUpDQojZW5kDQoNCiNmb3JlYWNoICgkdXNlciBpbiAkdXNlcnMpDQojYmVmb3JlYWxsDQoJPGZvcm0+DQoJPGRpdiBjbGFzcz0iY29udGVudC1saXN0IHRodW1ibmFpbCB1aS1tYXNvbnJ5IG1hcmdpbi10b3AiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgndGh1bWJuYWlscycpKSIgZGF0YS1jb2x1bW5jbGFzcz0idGh1bWJuYWlsLWNvbHVtbiI+DQojZWFjaA0KCTxkaXYgY2xhc3M9ImNvbnRlbnQtaXRlbSBjb250ZW50IHRodW1ibmFpbCIgZGF0YS1oYXNtb3JlPSIkaGFzTW9yZSIgZGF0YS11c2VyaWQ9IiR1c2VyLklkIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgZGF0YS11cmw9IiQhY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCR1c2VyLlByb2ZpbGVVcmwpIj4NCgkJPGRpdiBjbGFzcz0iYXZhdGFyIj4NCgkJCSRjb3JlX3YyX3VpLkdldFJlc2l6ZWRJbWFnZUh0bWwoJHVzZXIuQXZhdGFyVXJsLCAxNDAsIDE0MCwgIiV7YWx0PSR1c2VyLkRpc3BsYXlOYW1lLGJvcmRlcj0nMCcsUmVzaXplTWV0aG9kID0gJ1pvb21BbmRDcm9wJ30iKQ0KCQkJCQk8L2Rpdj4NCgkJCQkJPGgyIGNsYXNzPSJuYW1lIj4NCgkJCQkJCQkkdXNlci5EaXNwbGF5TmFtZQ0KCQkJCQk8L2gyPg0KCQk8ZGl2IGNsYXNzPSJhY3Rpb25zIj4NCgkJCTxkaXYgY2xhc3M9IiBuYXZpZ2F0aW9uLWxpc3QgdWktbGlua3MiIGRhdGEtbWlubGlua3M9IjAiIGRhdGEtbWF4bGlua3M9IjAiIGRhdGEtZGlyZWN0aW9uPSJob3Jpem9udGFsIj4NCgkJCQk8dWw+DQoJCQkJCSNmb3JlYWNoKCRhY3Rpb24gaW4gJGNvcmVfdjJfdXNlci5MaXN0QWN0aW9uTGlua3MoJHVzZXIuSWQpKQ0KCQkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtaXRlbSI+JGFjdGlvbi5IdG1sPC9saT4NCgkJCQkJI2VuZA0KCQkJCQk8bGkgY2xhc3M9Im5hdmlnYXRpb24tbGlzdC1pdGVtIj4NCgkJCQkJCQkJCQk8YSBocmVmPSIjIiBkYXRhLW1vcmU+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Nvbm5lY3QnKTwvYT4NCgkJCQkJCQkJPC9saT4NCgkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtdGVtIj4NCgkJCQkJCQkJCQkJCTxhIGhyZWY9IiMiIGRhdGEtY2FuY2VsPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdjYW5jZWwnKTwvYT4NCgkJCQkJCQkJCQk8L2xpPg0KCQkJCTwvdWw+DQoJCQk8L2Rpdj4NCgkJPC9kaXY+DQoJCTxkaXYgY2xhc3M9ImVkaXQtbW9kZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4NCgkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgLz4NCgkJPC9kaXY+DQoJPC9kaXY+DQojYWZ0ZXJhbGwNCgk8L2Rpdj4NCgk8L2Zvcm0+DQojbm9kYXRhDQoJPGRpdiBjbGFzcz0ibWVzc2FnZSBub3JlY29yZHMiPg0KCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnRm9sbG93aW5nX05vbmUnKQ0KCTwvZGl2Pg0KI2VuZA==</file>
    			<file name="friends.vm">I3NldCAoJGZyaWVuZHNoaXBzID0gJGNvcmVfdjJfZnJpZW5kc2hpcC5MaXN0KCIleyBGcmllbmRzaGlwU3RhdGUgPSAnQXBwcm92ZWQnLCBSZXF1ZXN0b3JJZCA9ICR0YXJnZXRVc2VyLklkLCBQYWdlSW5kZXggPSAkcGFnZUluZGV4LCBQYWdlU2l6ZSA9ICRwYWdlU2l6ZSwgU29ydEJ5ID0gJ0Rpc3BsYXlOYW1lJywgU29ydE9yZGVyID0gJ0FzY2VuZGluZycgfSIpKQ0KI3NldCgkdG90YWwgPSAkZnJpZW5kc2hpcHMuVG90YWxDb3VudCkNCg0KI3NldCAoJGhhc01vcmUgPSBmYWxzZSkNCiNzZXQgKCRjdXJyZW50UGFnZWRRdWFudGl0eSA9ICgkZnJpZW5kc2hpcHMuUGFnZUluZGV4ICsgMSkgKiAkZnJpZW5kc2hpcHMuUGFnZVNpemUpDQojaWYgKCRmcmllbmRzaGlwcy5Ub3RhbENvdW50ID4gJGN1cnJlbnRQYWdlZFF1YW50aXR5KQ0KCQkjc2V0ICgkaGFzTW9yZSA9IHRydWUpDQojZW5kDQoNCiNmb3JlYWNoICgkZnJpZW5kc2hpcCBpbiAkZnJpZW5kc2hpcHMpDQojYmVmb3JlYWxsDQoJPGZvcm0+DQoJPGRpdiBjbGFzcz0iY29udGVudC1saXN0IHRodW1ibmFpbCB1aS1tYXNvbnJ5IG1hcmdpbi10b3AiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgndGh1bWJuYWlscycpKSIgZGF0YS1jb2x1bW5jbGFzcz0idGh1bWJuYWlsLWNvbHVtbiI+DQojZWFjaA0KCSNzZXQgKCR1c2VyID0gZmFsc2UpDQoJI2lmICgkZnJpZW5kc2hpcC5SZWNpcGllbnQgJiYgJGZyaWVuZHNoaXAuUmVjaXBpZW50LklkID09ICR0YXJnZXRVc2VyLklkKQ0KCQkjc2V0ICgkdXNlciA9ICRmcmllbmRzaGlwLlJlcXVlc3RvcikNCgkjZWxzZQ0KCQkjc2V0ICgkdXNlciA9ICRmcmllbmRzaGlwLlJlY2lwaWVudCkNCgkjZW5kDQoJI2lmICgkdXNlcikNCgkJPGRpdiBjbGFzcz0iY29udGVudC1pdGVtIGNvbnRlbnQgdGh1bWJuYWlsIiBkYXRhLWhhc21vcmU9IiRoYXNNb3JlIiBkYXRhLXVzZXJpZD0iJHVzZXIuSWQiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBkYXRhLXVybD0iJCFjb3JlX3YyX2VuY29kaW5nLkh0bWxBdHRyaWJ1dGVFbmNvZGUoJHVzZXIuUHJvZmlsZVVybCkiPg0KCQkJPGRpdiBjbGFzcz0iYXZhdGFyIj4NCgkJCQkkY29yZV92Ml91aS5HZXRSZXNpemVkSW1hZ2VIdG1sKCR1c2VyLkF2YXRhclVybCwgMTQwLCAxNDAsICIle2FsdD0kdXNlci5EaXNwbGF5TmFtZSxib3JkZXI9JzAnLFJlc2l6ZU1ldGhvZCA9ICdab29tQW5kQ3JvcCd9IikNCgkJCQkJCTwvZGl2Pg0KCQkJCQkJPGgyIGNsYXNzPSJuYW1lIj4NCgkJCQkJCQkJJHVzZXIuRGlzcGxheU5hbWUNCgkJCQkJCTwvaDI+DQoJCQk8ZGl2IGNsYXNzPSJhY3Rpb25zIj4NCgkJCQk8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QgdWktbGlua3MiIGRhdGEtbWlubGlua3M9IjAiIGRhdGEtbWF4bGlua3M9IjAiIGRhdGEtZGlyZWN0aW9uPSJob3Jpem9udGFsIj4NCgkJCQkJPHVsPg0KCQkJCQkJI2ZvcmVhY2goJGFjdGlvbiBpbiAkY29yZV92Ml91c2VyLkxpc3RBY3Rpb25MaW5rcygkdXNlci5JZCkpDQoJCQkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtaXRlbSI+JGFjdGlvbi5IdG1sPC9saT4NCgkJCQkJCSNlbmQNCgkJCQkJCTxsaSBjbGFzcz0ibmF2aWdhdGlvbi1saXN0LWl0ZW0iPg0KCQkJCQkJCQkJCQk8YSBocmVmPSIjIiBkYXRhLW1vcmU+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0Nvbm5lY3QnKTwvYT4NCgkJCQkJCQkJCTwvbGk+DQoJCQkJCQk8bGkgY2xhc3M9Im5hdmlnYXRpb24tbGlzdC10ZW0iPg0KCQkJCQkJCQkJCQkJCQkJCTxhIGhyZWY9IiMiIGRhdGEtY2FuY2VsPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdjYW5jZWwnKTwvYT4NCgkJCQkJCQkJCQkJCQkJPC9saT4NCgkJCQkJPC91bD4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0iZWRpdC1tb2RlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgLz4NCgkJCTwvZGl2Pg0KCQk8L2Rpdj4NCgkjZW5kDQojYWZ0ZXJhbGwNCgk8L2Rpdj4NCgk8L2Zvcm0+DQojbm9kYXRhDQoJPGRpdiBjbGFzcz0ibWVzc2FnZSBub3JlY29yZHMiPg0KCQkkY29yZV92Ml9sYW5ndWFnZS5Gb3JtYXRTdHJpbmcoJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ0VkaXRQcm9maWxlX0ZyaWVuZHNfTm9uZScpLCAkdGFyZ2V0VXNlci5EaXNwbGF5TmFtZSkNCgk8L2Rpdj4NCiNlbmQ=</file>
    			<file name="inSidebar.vm">I3NldCAoJGluU2lkZWJhciA9IGZhbHNlKQ0KI3NldCAoJHJlZ2lvbiA9ICRjb3JlX3YyX3dpZGdldC5SZWdpb25OYW1lLlRvTG93ZXIoKSkNCiNzZXQgKCRsYXlvdXQgPSAkY29yZV92Ml9wYWdlLkxheW91dC5Ub0xvd2VyKCkpDQoNCiNpZiAoJHJlZ2lvbiA9PSAnc3BsaXQtc2lkZWJhci1sZWZ0JyB8fCAkcmVnaW9uID09ICdzcGxpdC1zaWRlYmFyLXJpZ2h0JyB8fCAkcmVnaW9uID09ICdsZWZ0LXNpZGViYXInKSANCiAgICAjc2V0ICgkaW5TaWRlYmFyID0gdHJ1ZSkNCiNlbHNlaWYgKCRyZWdpb24gPT0gJ3JpZ2h0LXNpZGViYXInICYmICEkbGF5b3V0LkNvbnRhaW5zKCdzcGxpdC1jb250ZW50JykgJiYgISRsYXlvdXQuQ29udGFpbnMoJ3NwbGl0LXNpZGViYXInKSkNCiAgICAjc2V0ICgkaW5TaWRlYmFyID0gdHJ1ZSkNCiNlbmQ=</file>
    			<file name="list.vm">I3NldCAoJHZpZXdUeXBlID0gJGNvcmVfdjJfd2lkZ2V0LkdldFN0cmluZ1ZhbHVlKCd2aWV3VHlwZScsICdzdGFuZGFyZCcpKQ0KI3NldCAoJHF1ZXJ5VHlwZSA9ICRjb3JlX3YyX3dpZGdldC5HZXRTdHJpbmdWYWx1ZSgncXVlcnlUeXBlJywgJ2N1cnJlbnRVc2VyJykpDQojc2V0ICgkcGFnZVNpemUgPSAkY29yZV92Ml93aWRnZXQuR2V0SW50VmFsdWUoJ3BhZ2VTaXplJywgMjEpKQ0KI3NldCAoJHBhZ2VJbmRleCA9ICRjb3JlX3YyX3VpLkdldEN1cnJlbnRQYWdlSW5kZXgoKSkJDQoNCiNzZXQgKCR0YXJnZXRVc2VyID0gZmFsc2UpDQojaWYgKCRxdWVyeVR5cGUgPT0gImFjY2Vzc2luZ1VzZXIiKQ0KCSNzZXQgKCR0YXJnZXRVc2VyID0gJGNvcmVfdjJfdXNlci5BY2Nlc3NpbmcpDQojZWxzZWlmICgkcXVlcnlUeXBlID09ICJjdXJyZW50VXNlciIpDQoJI3NldCAoJHRhcmdldFVzZXIgPSAkY29yZV92Ml91c2VyLkN1cnJlbnQpDQojZW5kDQoNCiNzZXQgKCRpc1VzZXJBY2Nlc3NpbmcgPSBmYWxzZSkNCiNpZiAoJHRhcmdldFVzZXIuSWQgPT0gJGNvcmVfdjJfdXNlci5BY2Nlc3NpbmcuSWQpDQoJI3NldCAoJGlzVXNlckFjY2Vzc2luZyA9IHRydWUpDQojZW5kDQoNCiNzZXQgKCR2aWV3VHlwZSA9ICJGcmllbmRzIikNCiNzZXQgKCR2aWV3VHlwZSA9ICRjb3JlX3YyX3BhZ2UuR2V0UXVlcnlTdHJpbmdWYWx1ZSgnU2hvdycpKQ0KDQojc2V0ICgkYWNjZXNzaW5nVXNlciA9ICRjb3JlX3YyX3VzZXIuQWNjZXNzaW5nKQ0KI2lmICgkaXNVc2VyQWNjZXNzaW5nKQ0KCSNpZiAoJHZpZXdUeXBlID09ICdGb2xsb3dpbmcnKQ0KCQkkY29yZV92Ml93aWRnZXQuRXhlY3V0ZUZpbGUoJ2ZvbGxvd2luZy52bScpDQoJI2Vsc2VpZiAoJHZpZXdUeXBlID09ICdGb2xsb3dlcnMnKQ0KCQkkY29yZV92Ml93aWRnZXQuRXhlY3V0ZUZpbGUoJ2ZvbGxvd2Vycy52bScpDQoJI2Vsc2VpZiAoJHZpZXdUeXBlID09ICdQZW5kaW5nJykNCgkJJGNvcmVfdjJfd2lkZ2V0LkV4ZWN1dGVGaWxlKCdwZW5kaW5nLnZtJykNCgkjZWxzZWlmICgkdmlld1R5cGUgPT0gJ1JldmlldycpDQoJCSRjb3JlX3YyX3dpZGdldC5FeGVjdXRlRmlsZSgncmV2aWV3LnZtJykNCgkjZWxzZWlmICgkdmlld1R5cGUgPT0gJ1JlY29tbWVuZGF0aW9ucycpDQoJCSRjb3JlX3YyX3dpZGdldC5FeGVjdXRlRmlsZSgncmVjb21tZW5kYXRpb25zLnZtJykNCgkjZWxzZQ0KCQkkY29yZV92Ml93aWRnZXQuRXhlY3V0ZUZpbGUoJ2ZyaWVuZHMudm0nKQ0KCSNlbmQNCiNlbHNlDQoJJGNvcmVfdjJfd2lkZ2V0LkV4ZWN1dGVGaWxlKCdmcmllbmRzLnZtJykNCiNlbmQ=</file>
    			<file name="pending.vm">IyMgbG9hZCBmcmllbmRzaHBzIHRvIHJldmlldw0KI3NldCAoJGZyaWVuZHNoaXBzID0gJGNvcmVfdjJfZnJpZW5kc2hpcC5MaXN0KCIleyBGcmllbmRzaGlwU3RhdGUgPSAnUGVuZGluZycsIFJlcXVlc3RvcklkID0gJHRhcmdldFVzZXIuSWQsIFBhZ2VJbmRleCA9ICRwYWdlSW5kZXgsIFBhZ2VTaXplID0gJHBhZ2VTaXplLCBTb3J0QnkgPSAnTGFzdE1vZGlmaWVkRGF0ZScsIFNvcnRPcmRlciA9ICdEZXNjZW5kaW5nJyB9IikpDQojc2V0KCR0b3RhbCA9ICRmcmllbmRzaGlwcy5Ub3RhbENvdW50KQ0KDQojc2V0ICgkaGFzTW9yZSA9IGZhbHNlKQ0KI3NldCAoJGN1cnJlbnRQYWdlZFF1YW50aXR5ID0gKCRmcmllbmRzaGlwcy5QYWdlSW5kZXggKyAxKSAqICRmcmllbmRzaGlwcy5QYWdlU2l6ZSkNCiNpZiAoJGZyaWVuZHNoaXBzLlRvdGFsQ291bnQgPiAkY3VycmVudFBhZ2VkUXVhbnRpdHkpDQoJCSNzZXQgKCRoYXNNb3JlID0gdHJ1ZSkNCiNlbmQNCg0KI2ZvcmVhY2ggKCRmcmllbmRzaGlwIGluICRmcmllbmRzaGlwcykNCiNiZWZvcmVhbGwNCgk8Zm9ybT4NCgk8ZGl2IGNsYXNzPSJjb250ZW50LWxpc3QgdGh1bWJuYWlsIHVpLW1hc29ucnkgbWFyZ2luLXRvcCIgaWQ9IiRjb3JlX3YyX2VuY29kaW5nLkh0bWxBdHRyaWJ1dGVFbmNvZGUoJGNvcmVfdjJfd2lkZ2V0LlVuaXF1ZUlkKCd0aHVtYm5haWxzJykpIiBkYXRhLWNvbHVtbmNsYXNzPSJ0aHVtYm5haWwtY29sdW1uIj4NCiNlYWNoDQoJI3NldCAoJHVzZXIgPSBmYWxzZSkNCgkjaWYgKCRmcmllbmRzaGlwLlJlY2lwaWVudCAmJiAkZnJpZW5kc2hpcC5SZWNpcGllbnQuSWQgPT0gJHRhcmdldFVzZXIuSWQpDQoJCSNzZXQgKCR1c2VyID0gJGZyaWVuZHNoaXAuUmVxdWVzdG9yKQ0KCSNlbHNlDQoJCSNzZXQgKCR1c2VyID0gJGZyaWVuZHNoaXAuUmVjaXBpZW50KQ0KCSNlbmQNCgkjaWYgKCR1c2VyKQ0KCQk8ZGl2IGNsYXNzPSJjb250ZW50LWl0ZW0gY29udGVudCB0aHVtYm5haWwiIGRhdGEtaGFzbW9yZT0iJGhhc01vcmUiIGRhdGEtdXNlcmlkPSIkdXNlci5JZCIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGRhdGEtdXJsPSIkIWNvcmVfdjJfZW5jb2RpbmcuSHRtbEF0dHJpYnV0ZUVuY29kZSgkdXNlci5Qcm9maWxlVXJsKSI+DQoJCQk8ZGl2IGNsYXNzPSJhdmF0YXIiPg0KCQkJCSRjb3JlX3YyX3VpLkdldFJlc2l6ZWRJbWFnZUh0bWwoJHVzZXIuQXZhdGFyVXJsLCAxNDAsIDE0MCwgIiV7YWx0PSR1c2VyLkRpc3BsYXlOYW1lLGJvcmRlcj0nMCcsUmVzaXplTWV0aG9kID0gJ1pvb21BbmRDcm9wJ30iKQ0KCQkJCQkJPC9kaXY+DQoJCQkJCQk8aDIgY2xhc3M9Im5hbWUiPg0KCQkJCQkJCQkkdXNlci5EaXNwbGF5TmFtZQ0KCQkJCQkJPC9oMj4NCgkJCTxkaXYgY2xhc3M9ImFjdGlvbnMiPg0KCQkJCTxkaXYgY2xhc3M9IiBuYXZpZ2F0aW9uLWxpc3QgdWktbGlua3MiIGRhdGEtbWlubGlua3M9IjAiIGRhdGEtbWF4bGlua3M9IjAiIGRhdGEtZGlyZWN0aW9uPSJob3Jpem9udGFsIj4NCgkJCQkJPHVsPg0KCQkJCQkJI2ZvcmVhY2goJGFjdGlvbiBpbiAkY29yZV92Ml91c2VyLkxpc3RBY3Rpb25MaW5rcygkdXNlci5JZCkpDQoJCQkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtaXRlbSI+JGFjdGlvbi5IdG1sPC9saT4NCgkJCQkJCSNlbmQNCgkJCQkJCTxsaSBjbGFzcz0ibmF2aWdhdGlvbi1saXN0LWl0ZW0iPg0KCQkJCQkJCQkJCQk8YSBocmVmPSIjIiBkYXRhLW1vcmU+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ2VkaXQnKTwvYT4NCgkJCQkJCQkJCTwvbGk+DQoJCQkJCQk8bGkgY2xhc3M9Im5hdmlnYXRpb24tbGlzdC10ZW0iPg0KCQkJCQkJCQkJCQkJCQkJCTxhIGhyZWY9IiMiIGRhdGEtY2FuY2VsPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdjYW5jZWwnKTwvYT4NCgkJCQkJCQkJCQkJCQkJPC9saT4NCgkJCQkJPC91bD4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQkJPGRpdiBjbGFzcz0iZWRpdC1tb2RlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgLz4NCgkJCTwvZGl2Pg0KCQk8L2Rpdj4NCgkjZW5kDQojYWZ0ZXJhbGwNCgk8L2Rpdj4NCgk8L2Zvcm0+DQojbm9kYXRhDQoJPGRpdiBjbGFzcz0ibWVzc2FnZSBub3JlY29yZHMiPg0KCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnRnJpZW5kUmVxdWVzdF9Ob25lVG9SZXZpZXcnKQ0KCTwvZGl2Pg0KI2VuZA==</file>
    			<file name="recommendations.vm">I3NldCgkdXNlclJlY29tbWVuZGF0aW9ucyA9ICRjb3JlX3YyX3VzZXJSZWNvbW1lbmRhdGlvbi5MaXN0KCIle1BhZ2VTaXplPSRwYWdlU2l6ZSxQYWdlSW5kZXg9JHBhZ2VJbmRleH0iKSkNCiNzZXQoJHRvdGFsID0gJHVzZXJSZWNvbW1lbmRhdGlvbnMuVG90YWxDb3VudCkNCg0KI2ZvcmVhY2ggKCR1c2VyUmVjb21tZW5kYXRpb24gaW4gJHVzZXJSZWNvbW1lbmRhdGlvbnMpDQojYmVmb3JlYWxsDQoJPGZvcm0+DQoJPGRpdiBjbGFzcz0iY29udGVudC1saXN0IHRodW1ibmFpbCB1aS1tYXNvbnJ5IG1hcmdpbi10b3AiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgndGh1bWJuYWlscycpKSIgZGF0YS1jb2x1bW5jbGFzcz0idGh1bWJuYWlsLWNvbHVtbiI+DQojZWFjaA0KCSNzZXQgKCR1c2VyID0gZmFsc2UpDQoJI3NldCAoJHVzZXIgPSAkdXNlclJlY29tbWVuZGF0aW9uLlVzZXIpDQoJI2lmICgkdXNlcikNCgkJPGRpdiBjbGFzcz0iY29udGVudC1pdGVtIGNvbnRlbnQgdGh1bWJuYWlsIiBkYXRhLWhhc21vcmU9IiRoYXNNb3JlIiBkYXRhLXVzZXJpZD0iJHVzZXIuSWQiIHN0eWxlPSJjdXJzb3I6IHBvaW50ZXI7IiBkYXRhLXVybD0iJCFjb3JlX3YyX2VuY29kaW5nLkh0bWxBdHRyaWJ1dGVFbmNvZGUoJHVzZXIuUHJvZmlsZVVybCkiPg0KCQkJPGRpdiBjbGFzcz0iYXZhdGFyIj4NCgkJCQkkY29yZV92Ml91aS5HZXRSZXNpemVkSW1hZ2VIdG1sKCR1c2VyLkF2YXRhclVybCwgMTQwLCAxNDAsICIle2FsdD0kdXNlci5EaXNwbGF5TmFtZSxib3JkZXI9JzAnLFJlc2l6ZU1ldGhvZCA9ICdab29tQW5kQ3JvcCd9IikNCgkJCQkJCTwvZGl2Pg0KCQkJCQkJPGgyIGNsYXNzPSJuYW1lIj4NCgkJCQkJCQkJJHVzZXIuRGlzcGxheU5hbWUNCgkJCQkJCTwvaDI+DQoJCQk8ZGl2IGNsYXNzPSJhY3Rpb25zIj4NCgkJCQk8ZGl2IGNsYXNzPSIgbmF2aWdhdGlvbi1saXN0IHVpLWxpbmtzIiBkYXRhLW1pbmxpbmtzPSIwIiBkYXRhLW1heGxpbmtzPSIwIiBkYXRhLWRpcmVjdGlvbj0iaG9yaXpvbnRhbCI+DQoJCQkJCTx1bD4NCgkJCQkJCTxsaSBjbGFzcz0ibmF2aWdhdGlvbi1pdGVtIj4NCgkJCQkJCQk8YSBocmVmPSIjIiBjbGFzcz0iaW50ZXJuYWwtbGluayBpZ25vcmUtc3VnZ2VzdGlvbiIgZGF0YS1tZXNzYWdlbmFtZT0iaWdub3JlVXNlclJlY29tbWVuZGF0aW9uIiBkYXRhLXVzZXJpZD0iJHVzZXJSZWNvbW1lbmRhdGlvbi5Vc2VyLklkIj4kY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnaWdub3JlX3VzZXJfcmVjb21tZW5kYXRpb24nKTwvYT4NCgkJCQkJCTwvbGk+DQoJCQkJCQkjZm9yZWFjaCgkYWN0aW9uIGluICRjb3JlX3YyX3VzZXIuTGlzdEFjdGlvbkxpbmtzKCR1c2VyLklkKSkNCgkJCQkJCQk8bGkgY2xhc3M9Im5hdmlnYXRpb24tbGlzdC1pdGVtIj4kYWN0aW9uLkh0bWw8L2xpPg0KCQkJCQkJI2VuZA0KCQkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtaXRlbSI+DQoJCQkJCQkJCQkJCTxhIGhyZWY9IiMiIGRhdGEtbW9yZT4kY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnQ29ubmVjdCcpPC9hPg0KCQkJCQkJCQkJPC9saT4NCgkJCQkJCTxsaSBjbGFzcz0ibmF2aWdhdGlvbi1saXN0LXRlbSI+DQoJCQkJCQkJCQkJCQkJCQkJPGEgaHJlZj0iIyIgZGF0YS1jYW5jZWw+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ2NhbmNlbCcpPC9hPg0KCQkJCQkJCQkJCQkJCQk8L2xpPg0KCQkJCQk8L3VsPg0KCQkJCTwvZGl2Pg0KCQkJPC9kaXY+DQoJCQk8ZGl2IGNsYXNzPSJlZGl0LW1vZGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+DQoJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiAvPg0KCQkJPC9kaXY+DQoJCTwvZGl2Pg0KCSNlbmQNCiNhZnRlcmFsbA0KCTwvZGl2Pg0KCTwvZm9ybT4NCiNub2RhdGENCgk8ZGl2IGNsYXNzPSJtZXNzYWdlIG5vcmVjb3JkcyI+DQoJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdSZWNvbW1lbmRhdGlvbnNfTm9uZScpDQoJPC9kaXY+DQojZW5k</file>
    			<file name="review.vm">IyMgbG9hZCBwZW5kaW5nIGZyaWVuZHNoaXBzDQojc2V0ICgkZnJpZW5kc2hpcHNUb1JldmlldyA9ICRjb3JlX3YyX2ZyaWVuZHNoaXAuTGlzdCgiJXsgRnJpZW5kc2hpcFN0YXRlID0gJ1BlbmRpbmcnLCBSZWNpcGllbnRJZCA9ICR0YXJnZXRVc2VyLklkLCBQYWdlSW5kZXggPSAkcGFnZUluZGV4LCBQYWdlU2l6ZSA9ICRwYWdlU2l6ZSwgU29ydEJ5ID0gJ0xhc3RNb2RpZmllZERhdGUnLCBTb3J0T3JkZXIgPSAnRGVzY2VuZGluZycgfSIpKQ0KI3NldCgkdG90YWwgPSAkZnJpZW5kc2hpcHMuVG90YWxDb3VudCkNCg0KI3NldCAoJGhhc01vcmUgPSBmYWxzZSkNCiNzZXQgKCRjdXJyZW50UGFnZWRRdWFudGl0eSA9ICgkZnJpZW5kc2hpcHNUb1Jldmlldy5QYWdlSW5kZXggKyAxKSAqICRmcmllbmRzaGlwc1RvUmV2aWV3LlBhZ2VTaXplKQ0KI2lmICgkZnJpZW5kc2hpcHNUb1Jldmlldy5Ub3RhbENvdW50ID4gJGN1cnJlbnRQYWdlZFF1YW50aXR5KQ0KCSNzZXQgKCRoYXNNb3JlID0gdHJ1ZSkNCiNlbmQNCg0KI3NldCgkYWNjZXB0VXNlcklkID0gJGNvcmVfdjJfdXRpbGl0eS5QYXJzZUludCgkY29yZV92Ml9wYWdlLkdldFF1ZXJ5U3RyaW5nVmFsdWUoJ0FjY2VwdCcpKSkNCiNpZiAoJGFjY2VwdFVzZXJJZCA+IDApDQoJI3NldCgkYWNjZXB0VXNlciA9ICRjb3JlX3YyX3VzZXIuR2V0KCIleyBJZCA9ICRhY2NlcHRVc2VySWQgfSIpKQ0KCSNpZiAoJGFjY2VwdFVzZXIpDQoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCgkJalF1ZXJ5LnRlbGxpZ2VudC5ldm9sdXRpb24ubm90aWZpY2F0aW9ucy5zaG93KCckY29yZV92Ml9sYW5ndWFnZS5Gb3JtYXRTdHJpbmcoJGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoIkZyaWVuZFJlcXVlc3RfQWNjZXB0ZWRfTm90aWZpY2F0aW9uIiksICRhY2NlcHRVc2VyLkRpc3BsYXlOYW1lKScsIHt0eXBlOiAnc3VjY2VzcycsIGR1cmF0aW9uOiAxMDAwMH0pOw0KCQk8L3NjcmlwdD4NCgkjZW5kDQojZW5kDQojc2V0KCRyZWplY3RVc2VySWQgPSAkY29yZV92Ml91dGlsaXR5LlBhcnNlSW50KCRjb3JlX3YyX3BhZ2UuR2V0UXVlcnlTdHJpbmdWYWx1ZSgnUmVqZWN0JykpKQ0KI2lmICgkcmVqZWN0VXNlcklkID4gMCkNCgkjc2V0KCRyZWplY3RVc2VyID0gJGNvcmVfdjJfdXNlci5HZXQoIiV7IElkID0gJHJlamVjdFVzZXJJZCB9IikpDQoJI2lmICgkcmVqZWN0VXNlcikNCgkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCQlqUXVlcnkudGVsbGlnZW50LmV2b2x1dGlvbi5ub3RpZmljYXRpb25zLnNob3coJyRjb3JlX3YyX2xhbmd1YWdlLkZvcm1hdFN0cmluZygkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgiRnJpZW5kUmVxdWVzdF9SZWplY3RlZF9Ob3RpZmljYXRpb24iKSwgJHJlamVjdFVzZXIuRGlzcGxheU5hbWUpJywge3R5cGU6ICdzdWNjZXNzJywgZHVyYXRpb246IDEwMDAwfSk7DQoJCTwvc2NyaXB0Pg0KCSNlbmQNCiNlbmQNCg0KIyMgZmluZCByZWNlbnRseS1hZGRlZCBmcmllbmRzLCBhbmQgZGlzcGxheSBtZXNzYWdlcyBmb3IgZWFjaC4NCg0KI3NldCAoJGZyaWVuZHNoaXBzID0gJGNvcmVfdjJfZnJpZW5kc2hpcC5MaXN0KCIleyBGcmllbmRzaGlwU3RhdGUgPSAnQXBwcm92ZWQnLCBSZXF1ZXN0b3JJZCA9ICR1c2VyLklkLCBQYWdlU2l6ZSA9IDEwLCBTb3J0QnkgPSAnTGFzdE1vZGlmaWVkRGF0ZScsIFNvcnRPcmRlciA9ICdEZXNjZW5kaW5nJyB9IikpDQojc2V0ICgkcmVjZW50RnJpZW5kc2hpcHMgPSBbXSkNCiNzZXQgKCRkcSA9ICciJykNCiNpZiAoJGZyaWVuZHNoaXBzICYmICRmcmllbmRzaGlwcy5Db3VudCA+IDApDQoJI3NldCAoJGN1dG9mZkRhdGUgPSAkY29yZV92Ml91dGlsaXR5LkN1cnJlbnREYXRlLkFkZE1pbnV0ZXMoLTEpKQ0KCSNmb3JlYWNoICgkZnJpZW5kIGluICRmcmllbmRzaGlwcykNCgkJI2lmICgkZnJpZW5kLkxhc3RNb2RpZmllZERhdGUgPj0gJGN1dG9mZkRhdGUpDQoJCQkjc2V0ICgkYWRkSW5kZXggPSAkcmVjZW50RnJpZW5kc2hpcHMuQWRkKCRmcmllbmQpKQ0KCQkjZW5kDQoJI2VuZA0KI2VuZA0KDQojZm9yZWFjaCAoJGZyaWVuZHNoaXAgaW4gJHJlY2VudEZyaWVuZHNoaXBzKQ0KI2JlZm9yZWFsbA0KCTxkaXYgY2xhc3M9Im1lc3NhZ2Ugd2FybmluZyI+DQoJCTx1bCBjbGFzcz0iY29udGVudC1saXN0Ij4NCiNlYWNoDQoJI3NldCAoJGZyaWVuZCA9IGZhbHNlKQ0KCSNpZiAoJGZyaWVuZHNoaXAuUmVjaXBpZW50ICYmICRmcmllbmRzaGlwLlJlY2lwaWVudC5JZCA9PSAkdGFyZ2V0VXNlci5JZCkNCgkJI3NldCAoJGZyaWVuZCA9ICRmcmllbmRzaGlwLlJlcXVlc3RvcikNCgkjZWxzZQ0KCQkjc2V0ICgkZnJpZW5kID0gJGZyaWVuZHNoaXAuUmVjaXBpZW50KQ0KCSNlbmQNCgkjaWYgKCRmcmllbmQpDQoJCTxsaSBjbGFzcz0iY29udGVudC1pdGVtIj4NCgkJCSNzZXQgKCRmcmllbmRMaW5rID0gIjxhIGNsYXNzPSR7ZHF9aW50ZXJuYWwtbGluayB2aWV3LXVzZXItcHJvZmlsZSR7ZHF9IGhyZWY9JHtkcX0kY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCR7ZnJpZW5kLlByb2ZpbGVVcmx9KSR7ZHF9PjxzcGFuPiR7ZnJpZW5kLkRpc3BsYXlOYW1lfTwvc3Bhbj48L2E+IikNCgkJCSRjb3JlX3YyX2xhbmd1YWdlLkZvcm1hdFN0cmluZygkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnRnJpZW5kUmVxdWVzdF9BY2NlcHRlZF9Db25maXJtYXRpb24nKSwgJGZyaWVuZExpbmspDQoJCTwvbGk+DQoJI2VuZA0KI2FmdGVyYWxsDQoJCTwvdWw+DQoJPC9kaXY+DQojZW5kDQoNCiMjIHNob3cgYWxsIHBlbmRpbmcgcmV2aWV3DQoNCiNmb3JlYWNoICgkZnJpZW5kc2hpcCBpbiAkZnJpZW5kc2hpcHNUb1JldmlldykNCiNiZWZvcmVhbGwNCgk8dWwgY2xhc3M9ImNvbnRlbnQtbGlzdCBjb250ZW50IG1hcmdpbi10b3AiIGlkPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb3JlX3YyX3dpZGdldC5VbmlxdWVJZCgndGh1bWJuYWlscycpKSI+DQojZWFjaA0KCSNzZXQgKCR1c2VyID0gZmFsc2UpDQoJI2lmICgkZnJpZW5kc2hpcC5SZWNpcGllbnQgJiYgJGZyaWVuZHNoaXAuUmVjaXBpZW50LklkID09ICR0YXJnZXRVc2VyLklkKQ0KCQkjc2V0ICgkdXNlciA9ICRmcmllbmRzaGlwLlJlcXVlc3RvcikNCgkjZWxzZQ0KCQkjc2V0ICgkdXNlciA9ICRmcmllbmRzaGlwLlJlY2lwaWVudCkNCgkjZW5kDQoJI2lmICgkdXNlcikNCgkJPGxpIGNsYXNzPSJjb250ZW50LWl0ZW0gY29udGVudCAiIGRhdGEtaGFzbW9yZT0iJGhhc01vcmUiIGRhdGEtdXNlcmlkPSIkdXNlci5JZCIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGRhdGEtdXJsPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCR1c2VyLlByb2ZpbGVVcmwpIj4NCgkJCTxkaXYgY2xhc3M9ImNvbnRlbnQgYWJicmV2aWF0ZWQiPg0KCQkJCTxkaXYgY2xhc3M9ImF2YXRhciI+DQoJCQkJCSRjb3JlX3YyX3VpLkdldFJlc2l6ZWRJbWFnZUh0bWwoJHVzZXIuQXZhdGFyVXJsLCAxMDAsIDEwMCwgIiV7YWx0PSR1c2VyLkRpc3BsYXlOYW1lLGJvcmRlcj0nMCcsUmVzaXplTWV0aG9kID0gJ1pvb21BbmRDcm9wJ30iKQ0KCQkJCTwvZGl2Pg0KCQkJCTxkaXYgY2xhc3M9InN1bW1hcnkiPg0KCQkJCQk8aDIgY2xhc3M9Im5hbWUiPg0KCQkJCQkJJHVzZXIuRGlzcGxheU5hbWUNCgkJCQkJPC9oMj4NCgkJCQkJPGRpdiBjbGFzcz0iY29udGVudCI+DQoJCQkJCQkkZnJpZW5kc2hpcC5SZXF1ZXN0TWVzc2FnZQ0KCQkJCQk8L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCQk8ZGl2IGNsYXNzPSJhY3Rpb25zIj4NCgkJCQkJPGRpdiBjbGFzcz0iIG5hdmlnYXRpb24tbGlzdCB1aS1saW5rcyIgZGF0YS1taW5saW5rcz0iMCIgZGF0YS1tYXhsaW5rcz0iMCIgZGF0YS1kaXJlY3Rpb249Imhvcml6b250YWwiPg0KCQkJCQkJPHVsPg0KCQkJCQkJCSNmb3JlYWNoKCRhY3Rpb24gaW4gJGNvcmVfdjJfdXNlci5MaXN0QWN0aW9uTGlua3MoJHVzZXIuSWQpKQ0KCQkJCQkJCQk8bGkgY2xhc3M9Im5hdmlnYXRpb24tbGlzdC1pdGVtIj4kYWN0aW9uLkh0bWw8L2xpPg0KCQkJCQkJCSNlbmQNCgkJCQkJCQk8bGkgY2xhc3M9Im5hdmlnYXRpb24tbGlzdC1pdGVtIj4NCgkJCQkJCQkJPGEgaHJlZj0iIyIgZGF0YS1tb3JlPiRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdBcHByb3ZlRGVueScpPC9hPg0KCQkJCQkJCTwvbGk+DQoJCQkJCQkJPGxpIGNsYXNzPSJuYXZpZ2F0aW9uLWxpc3QtdGVtIj4NCgkJCQkJCQkJPGEgaHJlZj0iIyIgZGF0YS1jYW5jZWw+JGNvcmVfdjJfbGFuZ3VhZ2UuR2V0UmVzb3VyY2UoJ2NhbmNlbCcpPC9hPg0KCQkJCQkJCTwvbGk+DQoJCQkJCQk8L3VsPg0KCQkJCQk8L2Rpdj4NCgkJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQk8L2xpPg0KCSNlbmQNCiNhZnRlcmFsbA0KCTwvdWw+DQojbm9kYXRhDQoJPGRpdiBjbGFzcz0ibWVzc2FnZSBub3JlY29yZHMiPg0KCQkkY29yZV92Ml9sYW5ndWFnZS5HZXRSZXNvdXJjZSgnRnJpZW5kUmVxdWVzdF9Ob25lVG9SZXZpZXcnKQ0KCTwvZGl2Pg0KI2VuZA==</file>
    			<file name="search.vm">77u/DQojc2V0ICgkcXVlcnlUeXBlID0gJGNvcmVfdjJfd2lkZ2V0LkdldFN0cmluZ1ZhbHVlKCdxdWVyeVR5cGUnLCAnY3VycmVudFVzZXInKSkNCiNzZXQgKCR0YXJnZXRVc2VyID0gZmFsc2UpDQojaWYgKCRxdWVyeVR5cGUgPT0gImFjY2Vzc2luZ1VzZXIiKQ0KCSNzZXQgKCR0YXJnZXRVc2VyID0gJGNvcmVfdjJfdXNlci5BY2Nlc3NpbmcpDQojZWxzZWlmICgkcXVlcnlUeXBlID09ICJjdXJyZW50VXNlciIpDQoJI3NldCAoJHRhcmdldFVzZXIgPSAkY29yZV92Ml91c2VyLkN1cnJlbnQpDQojZW5kDQoNCiNzZXQoJHBhZ2VJbmRleCA9IDApDQojc2V0KCRwYWdlSW5kZXggPSAkY29yZV92Ml91dGlsaXR5LlBhcnNlSW50KCRjb3JlX3YyX3BhZ2UuR2V0UXVlcnlTdHJpbmdWYWx1ZSgnd19wYWdlSW5kZXgnKSkpDQoNCiNzZXQoJHF1ZXJ5ID0gJycpDQojc2V0KCRxdWVyeSA9ICRjb3JlX3YyX3BhZ2UuR2V0UXVlcnlTdHJpbmdWYWx1ZSgnd19xdWVyeScpKQ0KDQojc2V0ICgkZnJpZW5kc2hpcHMgPSAkY29yZV92Ml9mcmllbmRzaGlwLkxpc3QoIiV7IEZyaWVuZHNoaXBTdGF0ZSA9ICdBcHByb3ZlZCcsIFJlcXVlc3RvcklkID0gJHRhcmdldFVzZXIuSWQsIFBhZ2VJbmRleCA9ICRwYWdlSW5kZXgsIFBhZ2VTaXplID0gMTAsIFNvcnRCeSA9ICdEaXNwbGF5TmFtZScsIFNvcnRPcmRlciA9ICdBc2NlbmRpbmcnLCBTZWFyY2hUZXh0ID0gJHF1ZXJ5IH0iKSkNCg0KI3NldCAoJGhhc01vcmUgPSBmYWxzZSkNCiNzZXQgKCRjdXJyZW50UGFnZWRRdWFudGl0eSA9ICgkZnJpZW5kc2hpcHMuUGFnZUluZGV4ICsgMSkgKiAkZnJpZW5kc2hpcHMuUGFnZVNpemUpDQojaWYgKCRmcmllbmRzaGlwcy5Ub3RhbENvdW50ID4gJGN1cnJlbnRQYWdlZFF1YW50aXR5KQ0KICAgICNzZXQgKCRoYXNNb3JlID0gdHJ1ZSkNCiNlbmQNCg0KI2ZvcmVhY2ggKCRmcmllbmRzaGlwIGluICRmcmllbmRzaGlwcykNCiNlYWNoDQoJI3NldCAoJHVzZXIgPSBmYWxzZSkNCgkjaWYgKCRmcmllbmRzaGlwLlJlY2lwaWVudCAmJiAkZnJpZW5kc2hpcC5SZWNpcGllbnQuSWQgPT0gJHRhcmdldFVzZXIuSWQpDQoJCSNzZXQgKCR1c2VyID0gJGZyaWVuZHNoaXAuUmVxdWVzdG9yKQ0KCSNlbHNlDQoJCSNzZXQgKCR1c2VyID0gJGZyaWVuZHNoaXAuUmVjaXBpZW50KQ0KCSNlbmQNCgkjaWYgKCR1c2VyKQ0KCQkjc2V0KCRjb250ZW50ID0gZmFsc2UpDQoJCSNzZXQoJGNvbnRlbnQgPSAkY29yZV92Ml9jb250ZW50LkdldCgkdXNlci5Db250ZW50SWQsICRjb3JlX3YyX3VzZXIuQ29udGVudFR5cGVJZCkpDQoJCSNpZiAoJGNvbnRlbnQpDQoJCQk8bGkgY2xhc3M9ImNvbnRlbnQtaXRlbSIgZGF0YS1jb250ZW50dXJsPSIkY29yZV92Ml9lbmNvZGluZy5IdG1sQXR0cmlidXRlRW5jb2RlKCRjb250ZW50LlVybCkiICNpZigkaGFzTW9yZSkgZGF0YS1oYXNtb3JlPSJ0cnVlIiAjZW5kPg0KCQkJCSRjb250ZW50LlZpZXdIdG1sKCdXZWInKQ0KCQkJPC9saT4NCgkJI2VuZA0KCSNlbmQNCiNub2RhdGENCgk8ZGl2IGNsYXNzPSJtZXNzYWdlIG5vcmVjb3JkcyI+DQoJCSRjb3JlX3YyX2xhbmd1YWdlLkdldFJlc291cmNlKCdub19zZWFyY2hfbWF0Y2hlc19mb3VuZCcpDQoJPC9kaXY+DQojZW5kDQoNCg==</file>
    			<file name="style.less">LmNvbnRlbnQtZnJhZ21lbnQuZnJpZW5kc2hpcC1saXN0ICB7DQoJLmNvbnRlbnQtaXRlbS50aHVtYm5haWwgLmVkaXQtbW9kZSB7DQoJCXBvc2l0aW9uOiBhYnNvbHV0ZTsNCgkJdG9wOiAoMTBweCAvIDIpOw0KCQlsZWZ0OiAoMTBweCAvIDIpOw0KCX0NCg0KCWZpZWxkc2V0IHsNCgkJcGFkZGluZzogMTBweDsNCgkJYmFja2dyb3VuZC1jb2xvcjogLWV2by1kZWNyZWFzZS1jb250cmFzdCgtZXZvLXRoZW1lY29uZmlnLWNvbG9yKCdiYWNrZ3JvdW5kQ29sb3InLCAjRkZGRkZGKSwgMSUsIC1ldm8tdGhlbWVjb25maWctY29sb3IoJ2ZvcmVncm91bmRDb2xvcicsICMxMTE3MUEpLCAtZXZvLXRoZW1lY29uZmlnLWRvdWJsZSgnY29udHJhc3QnLCAwKSk7DQoJCWJvcmRlcjogMXB4IHNvbGlkIC1ldm8tZGVjcmVhc2UtY29udHJhc3QoLWV2by10aGVtZWNvbmZpZy1jb2xvcignYmFja2dyb3VuZENvbG9yJywgI0ZGRkZGRiksIDExJSwgLWV2by10aGVtZWNvbmZpZy1jb2xvcignZm9yZWdyb3VuZENvbG9yJywgIzExMTcxQSksIC1ldm8tdGhlbWVjb25maWctZG91YmxlKCdjb250cmFzdCcsIDApKTsNCgkJbWFyZ2luLWJvdHRvbTogMTBweDsNCg0KCQkuZmllbGQtbGlzdCAuZmllbGQtaXRlbSB7DQoJCQltYXJnaW46IDA7DQoJCX0NCgl9DQp9DQo=</file>
    			<file name="ui.js">KGZ1bmN0aW9uKCQsIGdsb2JhbCkgew0KDQoJLy8gcmV0dXJucyB0aGUgZnJpZW5kIGlkIHJlbGF0ZWQgdG8gYSBnaXZlbiBjaGlsZCBlbGVtZW50IG9mIHRoYXQgZnJpZW5kIGlkJ3Mgcm93IGl0ZW0NCgl2YXIgc2V0dXBFbmRsZXNzU2Nyb2xsaW5nID0gZnVuY3Rpb24oY29udGV4dCkgew0KCQl2YXIgaXNMb2FkaW5nTW9yZSA9IGZhbHNlLCBwYWdlSW5kZXggPSAwLCBoYXNNb3JlID0gY29udGV4dC5oYXNNb3JlID09ICdUcnVlJzsNCgkJJChkb2N1bWVudCkub24oJ3Njcm9sbGVuZCcsIGZ1bmN0aW9uKGUpew0KCQkJaWYoaXNMb2FkaW5nTW9yZSB8fCAhaGFzTW9yZSkNCgkJCQlyZXR1cm47DQoNCgkJCWlzTG9hZGluZ01vcmUgPSB0cnVlOw0KDQoJCQl2YXIgZGF0YSA9IHt9DQoJCQlkYXRhW2NvbnRleHQucGFnZUluZGV4S2V5XSA9IHBhZ2VJbmRleCArIDI7DQoNCgkJCSQudGVsbGlnZW50LmV2b2x1dGlvbi5nZXQoew0KCQkJCXVybDogY29udGV4dC5sb2FkVXJsLA0KCQkJCWRhdGE6IGRhdGENCgkJCX0pLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2Upew0KCQkJCXZhciBpdGVtcyA9ICQocmVzcG9uc2UpLmZpbmQoJ2Rpdi5jb250ZW50LWl0ZW0udGh1bWJuYWlsJyk7DQoJCQkJaWYgKGNvbnRleHQuaW5FZGl0TW9kZSkgew0KCQkJCQlpdGVtcy5maW5kKCcuZWRpdC1tb2RlJykuc2hvdygpLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpOw0KCQkJCX0NCgkJCQloYXNNb3JlID0gaXRlbXMuZGF0YSgnaGFzbW9yZScpID09ICdUcnVlJzsNCgkJCQljb250ZXh0LnRodW1ibmFpbHNDb250YWluZXIuZXZvbHV0aW9uTWFzb25yeSgnYXBwZW5kJywgaXRlbXMpOw0KCQkJCXBhZ2VJbmRleCsrOw0KCQkJCWlzTG9hZGluZ01vcmUgPSBmYWxzZTsNCgkJCX0pOw0KCQl9KTsNCgl9Ow0KDQoJdmFyIGFwaSA9IHsNCgkJcmVnaXN0ZXI6IGZ1bmN0aW9uKGNvbnRleHQpIHsNCgkJCWNvbnRleHQuaW5FZGl0TW9kZSA9IGZhbHNlOw0KCQkJY29udGV4dC5lZGl0Rm9ybUFjdGlvblRha2VuID0gZmFsc2U7DQoNCgkJCXNldHVwRW5kbGVzc1Njcm9sbGluZyhjb250ZXh0KTsNCg0KCQkJY29udGV4dC50aHVtYm5haWxzQ29udGFpbmVyDQoJCQkJLm9uKCdjbGljaycsICcuY29udGVudC1pdGVtJywgZnVuY3Rpb24oZSl7DQoJCQkJCWlmIChjb250ZXh0LmluRWRpdE1vZGUpIHsNCgkJCQkJCXZhciBjYiA9ICQodGhpcykuZmluZCgnLmVkaXQtbW9kZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdJyk7DQoJCQkJCQljYi5wcm9wKCdjaGVja2VkJywgIWNiLmlzKCc6Y2hlY2tlZCcpKS50cmlnZ2VyKCdjaGFuZ2UnKTsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCXZhciBlbG0gPSAkKHRoaXMpOw0KCQkJCQkJd2luZG93LmxvY2F0aW9uID0gZWxtLmRhdGEoJ3VybCcpOw0KCQkJCQl9DQoJCQkJfSk7DQoNCgkJCWNvbnRleHQudGh1bWJuYWlsc0NvbnRhaW5lcg0KCQkJCS5vbignY2xpY2snLCAnaW5wdXRbdHlwZT0iY2hlY2tib3giXScsIGZ1bmN0aW9uKGUpew0KCQkJCQlpZiAoY29udGV4dC5pbkVkaXRNb2RlKSB7DQoJCQkJCQl2YXIgY2IgPSAkKHRoaXMpOw0KCQkJCQkJY2IucHJvcCgnY2hlY2tlZCcsICFjYi5pcygnOmNoZWNrZWQnKSkudHJpZ2dlcignY2hhbmdlJyk7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQl2YXIgZWxtID0gJCh0aGlzKTsNCgkJCQkJCXdpbmRvdy5sb2NhdGlvbiA9IGVsbS5kYXRhKCd1cmwnKTsNCgkJCQkJfQ0KCQkJCX0pOw0KDQoJCQljb250ZXh0LndyYXBwZXIuZmluZCgnc2VsZWN0Jykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgew0KCQkJCXZhciBzID0gJCh0aGlzKTsNCgkJCQl2YXIgdXJsID0gcy5kYXRhKCd1cGRhdGUnKTsNCgkJCQlpZiAodXJsKSB7DQoJCQkJCXdpbmRvdy5sb2NhdGlvbiA9IHVybC5yZXBsYWNlKCdPUFRJT05WQUxVRScsIHMudmFsKCkpOw0KCQkJCX0NCgkJCX0pOw0KDQoJCQljb250ZXh0LmVkaXRNb2RlLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KCQkJCWNvbnRleHQuaW5FZGl0TW9kZSA9ICFjb250ZXh0LmluRWRpdE1vZGU7DQoJCQkJY29udGV4dC5zZWxlY3Rpb25Db3VudCA9IDA7DQoNCgkJCQlpZiAoY29udGV4dC5pbkVkaXRNb2RlKSB7DQoJCQkJCWNvbnRleHQuZWRpdEZvcm0uc2xpZGVEb3duKCdmYXN0Jyk7DQoJCQkJCWNvbnRleHQuZWRpdE1vZGUuaHRtbChjb250ZXh0LmNhbmNlbE1lc3NhZ2UpOw0KCQkJCQljb250ZXh0LmVkaXRNb2RlTWVzc2FnZS5odG1sKGNvbnRleHQuc2VsZWN0ZWRVc2Vyc01lc3NhZ2UucmVwbGFjZSgnezB9JywgJzAnKSk7DQoJCQkJCWNvbnRleHQudGh1bWJuYWlsc0NvbnRhaW5lci5maW5kKCcuZWRpdC1tb2RlJykuc2hvdygpLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpDQoJCQkJfSBlbHNlIHsNCgkJCQkJY29udGV4dC5lZGl0Rm9ybS5zbGlkZVVwKCdmYXN0Jyk7DQoJCQkJCWNvbnRleHQuZWRpdE1vZGUuaHRtbChjb250ZXh0LmVkaXRNZXNzYWdlKTsNCgkJCQkJY29udGV4dC50aHVtYm5haWxzQ29udGFpbmVyLmZpbmQoJy5lZGl0LW1vZGUnKS5oaWRlKCk7DQoNCgkJCQkJaWYgKGNvbnRleHQuZWRpdEZvcm1BY3Rpb25UYWtlbikgew0KCQkJCQkJd2luZG93LmxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uOw0KCQkJCQl9DQoJCQkJfQ0KDQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfSk7DQoNCgkJCWNvbnRleHQuZWRpdEZvcm0uZmluZCgnLmRvbmUnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCgkJCQljb250ZXh0LmluRWRpdE1vZGUgPSBmYWxzZTsNCgkJCQljb250ZXh0LmVkaXRGb3JtLnNsaWRlVXAoJ2Zhc3QnKTsNCgkJCQljb250ZXh0LmVkaXRNb2RlLmh0bWwoY29udGV4dC5lZGl0TWVzc2FnZSk7DQoJCQkJY29udGV4dC50aHVtYm5haWxzQ29udGFpbmVyLmZpbmQoJy5lZGl0LW1vZGUnKS5oaWRlKCk7DQoNCgkJCQlpZiAoY29udGV4dC5lZGl0Rm9ybUFjdGlvblRha2VuKSB7DQoJCQkJCXdpbmRvdy5sb2NhdGlvbiA9IHdpbmRvdy5sb2NhdGlvbjsNCgkJCQl9DQoJCQl9KTsNCg0KCQkJY29udGV4dC50aHVtYm5haWxzQ29udGFpbmVyLm9uKCdjaGFuZ2UnLCAnLmVkaXQtbW9kZSBpbnB1dFt0eXBlPSJjaGVja2JveCJdJywgZnVuY3Rpb24oKSB7DQoJCQkJaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHsNCgkJCQkJY29udGV4dC5zZWxlY3Rpb25Db3VudCsrOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWNvbnRleHQuc2VsZWN0aW9uQ291bnQtLTsNCgkJCQl9DQoNCgkJCQlpZiAoY29udGV4dC5zZWxlY3Rpb25Db3VudCA9PSAxKSB7DQoJCQkJCWNvbnRleHQuZWRpdE1vZGVNZXNzYWdlLmh0bWwoY29udGV4dC5zZWxlY3RlZFVzZXJNZXNzYWdlLnJlcGxhY2UoJ3swfScsICcxJykpOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWNvbnRleHQuZWRpdE1vZGVNZXNzYWdlLmh0bWwoY29udGV4dC5zZWxlY3RlZFVzZXJzTWVzc2FnZS5yZXBsYWNlKCd7MH0nLCBjb250ZXh0LnNlbGVjdGlvbkNvdW50KSk7DQoJCQkJfQ0KDQoJCQkJaWYgKGNvbnRleHQuc2VsZWN0aW9uQ291bnQgPiAwKSB7DQoJCQkJCWNvbnRleHQuZWRpdEZvcm0uZmluZCgnLmJ1dHRvbjpub3QoLmRvbmUpJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcuYnV0dG9uOm5vdCguZG9uZSknKS5hZGRDbGFzcygnZGlzYWJsZWQnKTsNCgkJCQl9DQoNCgkJCX0pLm9uKCdjbGljaycsICcuZWRpdC1tb2RlIGlucHV0W3R5cGU9ImNoZWNrYm94Il0nLCBmdW5jdGlvbigpIHsNCgkJCQlldmVudC5zdG9wUHJvcGFnYXRpb24oKTsNCgkJCX0pOw0KDQoJCQljb250ZXh0LmVkaXRGb3JtLmZpbmQoJy51bmZvbGxvdy1hbGwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCgkJCQl2YXIgYiA9ICQodGhpcyk7DQoJCQkJaWYgKGNvbnRleHQuc2VsZWN0aW9uQ291bnQgPT0gMCB8fCAhYi5kYXRhKCdjb25maXJtYXRpb24nKSB8fCAhZ2xvYmFsLmNvbmZpcm0oYi5kYXRhKCdjb25maXJtYXRpb24nKSkpIHsgcmV0dXJuIGZhbHNlOyB9DQoNCgkJCQkkKCcucHJvY2Vzc2luZycsIGNvbnRleHQuZWRpdEZvcm0pLmNzcygidmlzaWJpbGl0eSIsICJ2aXNpYmxlIik7DQoJCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcuYnV0dG9uJykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7DQoNCgkJCQkkLnRlbGxpZ2VudC5ldm9sdXRpb24uYmF0Y2goZnVuY3Rpb24oKSB7DQoJCQkJCWNvbnRleHQudGh1bWJuYWlsc0NvbnRhaW5lci5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQnKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCQkJdmFyIHVzZXJJZCA9ICQodGhpcykucGFyZW50cygnLmNvbnRlbnQtaXRlbS50aHVtYm5haWwnKS5kYXRhKCd1c2VyaWQnKTsNCgkJCQkJCSQudGVsbGlnZW50LmV2b2x1dGlvbi5kZWwoew0KCQkJCQkJCXVybDogJC50ZWxsaWdlbnQuZXZvbHV0aW9uLnNpdGUuZ2V0QmFzZVVybCgpICsgJ2FwaS5hc2h4L3YyL3VzZXJzL3tGb2xsb3dlcklkfS9mb2xsb3dpbmcve0ZvbGxvd2luZ0lkfS5qc29uJywNCgkJCQkJCQlkYXRhOiB7DQoJCQkJCQkJCUZvbGxvd2VySWQ6ICQudGVsbGlnZW50LmV2b2x1dGlvbi51c2VyLmFjY2Vzc2luZy5pZCwNCgkJCQkJCQkJRm9sbG93aW5nSWQ6IHVzZXJJZA0KCQkJCQkJCQl9DQoJCQkJCQkJfSk7DQoJCQkJCX0pOw0KCQkJCX0pDQoJCQkJCS50aGVuKGZ1bmN0aW9uKCkgew0KCQkJCQkJaWYgKGIuZGF0YSgnc3VjY2VzcycpKSB7ICQudGVsbGlnZW50LmV2b2x1dGlvbi5ub3RpZmljYXRpb25zLnNob3coYi5kYXRhKCdzdWNjZXNzJyksIHsgdHlwZTogJ2luZm9ybWF0aW9uJyB9KTsgfQ0KCQkJCQkJY29udGV4dC5lZGl0Rm9ybUFjdGlvblRha2VuID0gdHJ1ZTsNCgkJCQkJCSQoJy5wcm9jZXNzaW5nJywgY29udGV4dC5lZGl0Rm9ybSkuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOw0KCQkJCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcuYnV0dG9uJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQoJCQkJCX0sIGZ1bmN0aW9uKCkgew0KCQkJCQkJJCgnLnByb2Nlc3NpbmcnLCBjb250ZXh0LmVkaXRGb3JtKS5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7DQoJCQkJCQljb250ZXh0LmVkaXRGb3JtLmZpbmQoJy5idXR0b24nKS5yZW1vdmVDbGFzcygnZGlzYWJsZWQnKTsNCgkJCQkJfSk7DQoJCQl9KTsNCg0KCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcudW5mcmllbmQtYWxsJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQoJCQkJdmFyIGIgPSAkKHRoaXMpOw0KCQkJCWlmIChjb250ZXh0LnNlbGVjdGlvbkNvdW50ID09IDAgfHwgIWIuZGF0YSgnY29uZmlybWF0aW9uJykgfHwgIWdsb2JhbC5jb25maXJtKGIuZGF0YSgnY29uZmlybWF0aW9uJykpKSB7IHJldHVybiBmYWxzZTsgfQ0KDQoJCQkJJCgnLnByb2Nlc3NpbmcnLCBjb250ZXh0LmVkaXRGb3JtKS5jc3MoInZpc2liaWxpdHkiLCAidmlzaWJsZSIpOw0KCQkJCWNvbnRleHQuZWRpdEZvcm0uZmluZCgnLmJ1dHRvbicpLmFkZENsYXNzKCdkaXNhYmxlZCcpOw0KDQoJCQkJJC50ZWxsaWdlbnQuZXZvbHV0aW9uLmJhdGNoKGZ1bmN0aW9uKCkgew0KCQkJCQljb250ZXh0LnRodW1ibmFpbHNDb250YWluZXIuZmluZCgnaW5wdXRbdHlwZT0iY2hlY2tib3giXTpjaGVja2VkJykuZWFjaChmdW5jdGlvbigpIHsNCgkJCQkJCXZhciB1c2VySWQgPSAkKHRoaXMpLnBhcmVudHMoJy5jb250ZW50LWl0ZW0udGh1bWJuYWlsJykuZGF0YSgndXNlcmlkJyk7DQoJCQkJCQkkLnRlbGxpZ2VudC5ldm9sdXRpb24uZGVsKHsNCgkJCQkJCQl1cmw6ICQudGVsbGlnZW50LmV2b2x1dGlvbi5zaXRlLmdldEJhc2VVcmwoKSArICdhcGkuYXNoeC92Mi91c2Vycy97UmVxdWVzdG9ySWR9L2ZyaWVuZHMve1JlcXVlc3RlZUlkfS5qc29uJywNCgkJCQkJCQlkYXRhOiB7DQoJCQkJCQkJCVJlcXVlc3RvcklkOiAkLnRlbGxpZ2VudC5ldm9sdXRpb24udXNlci5hY2Nlc3NpbmcuaWQsDQoJCQkJCQkJCVJlcXVlc3RlZUlkOiB1c2VySWQNCgkJCQkJCQkJfQ0KCQkJCQkJCX0pOw0KCQkJCQl9KTsNCgkJCQl9KQ0KCQkJCQkudGhlbihmdW5jdGlvbigpIHsNCgkJCQkJCWlmIChiLmRhdGEoJ3N1Y2Nlc3MnKSkgeyAkLnRlbGxpZ2VudC5ldm9sdXRpb24ubm90aWZpY2F0aW9ucy5zaG93KGIuZGF0YSgnc3VjY2VzcycpLCB7IHR5cGU6ICdpbmZvcm1hdGlvbicgfSk7IH0NCgkJCQkJCWNvbnRleHQuZWRpdEZvcm1BY3Rpb25UYWtlbiA9IHRydWU7DQoJCQkJCQkkKCcucHJvY2Vzc2luZycsIGNvbnRleHQuZWRpdEZvcm0pLmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsNCgkJCQkJCWNvbnRleHQuZWRpdEZvcm0uZmluZCgnLmJ1dHRvbicpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpOw0KCQkJCQl9LCBmdW5jdGlvbigpIHsNCgkJCQkJCSQoJy5wcm9jZXNzaW5nJywgY29udGV4dC5lZGl0Rm9ybSkuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOw0KCQkJCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcuYnV0dG9uJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQoJCQkJCX0pOw0KCQkJfSk7DQoNCgkJCWNvbnRleHQuZWRpdEZvcm0uZmluZCgnLmZvbGxvdy1hbGwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCgkJCQl2YXIgYiA9ICQodGhpcyk7DQoJCQkJaWYgKGNvbnRleHQuc2VsZWN0aW9uQ291bnQgPT0gMCB8fCAhYi5kYXRhKCdjb25maXJtYXRpb24nKSB8fCAhZ2xvYmFsLmNvbmZpcm0oYi5kYXRhKCdjb25maXJtYXRpb24nKSkpIHsgcmV0dXJuIGZhbHNlOyB9DQoNCgkJCQkkKCcucHJvY2Vzc2luZycsIGNvbnRleHQuZWRpdEZvcm0pLmNzcygidmlzaWJpbGl0eSIsICJ2aXNpYmxlIik7DQoJCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcuYnV0dG9uJykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7DQoNCgkJCQkkLnRlbGxpZ2VudC5ldm9sdXRpb24uYmF0Y2goZnVuY3Rpb24oKSB7DQoJCQkJCWNvbnRleHQudGh1bWJuYWlsc0NvbnRhaW5lci5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdOmNoZWNrZWQnKS5lYWNoKGZ1bmN0aW9uKCkgew0KCQkJCQkJdmFyIHVzZXJJZCA9ICQodGhpcykucGFyZW50cygnLmNvbnRlbnQtaXRlbS50aHVtYm5haWwnKS5kYXRhKCd1c2VyaWQnKTsNCgkJCQkJCSQudGVsbGlnZW50LmV2b2x1dGlvbi5wb3N0KHsNCgkJCQkJCQl1cmw6ICQudGVsbGlnZW50LmV2b2x1dGlvbi5zaXRlLmdldEJhc2VVcmwoKSArICdhcGkuYXNoeC92Mi91c2Vycy97Rm9sbG93ZXJJZH0vZm9sbG93aW5nLmpzb24nLA0KCQkJCQkJCWRhdGE6IHsNCgkJCQkJCQkJRm9sbG93ZXJJZDogJC50ZWxsaWdlbnQuZXZvbHV0aW9uLnVzZXIuYWNjZXNzaW5nLmlkLA0KCQkJCQkJCQlGb2xsb3dpbmdJZDogdXNlcklkDQoJCQkJCQkJCX0NCgkJCQkJCQl9KQ0KCQkJCQl9KTsNCgkJCQl9KQ0KCQkJCQkudGhlbihmdW5jdGlvbigpIHsNCgkJCQkJCWlmIChiLmRhdGEoJ3N1Y2Nlc3MnKSkgeyAkLnRlbGxpZ2VudC5ldm9sdXRpb24ubm90aWZpY2F0aW9ucy5zaG93KGIuZGF0YSgnc3VjY2VzcycpLCB7IHR5cGU6ICdpbmZvcm1hdGlvbicgfSk7IH0NCgkJCQkJCWNvbnRleHQuZWRpdEZvcm1BY3Rpb25UYWtlbiA9IHRydWU7DQoJCQkJCQkkKCcucHJvY2Vzc2luZycsIGNvbnRleHQuZWRpdEZvcm0pLmNzcygidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsNCgkJCQkJCWNvbnRleHQuZWRpdEZvcm0uZmluZCgnLmJ1dHRvbicpLnJlbW92ZUNsYXNzKCdkaXNhYmxlZCcpOw0KCQkJCQl9LCBmdW5jdGlvbigpIHsNCgkJCQkJCSQoJy5wcm9jZXNzaW5nJywgY29udGV4dC5lZGl0Rm9ybSkuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOw0KCQkJCQkJY29udGV4dC5lZGl0Rm9ybS5maW5kKCcuYnV0dG9uJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7DQoJCQkJCX0pOw0KCQkJfSk7DQoNCgkJCSQudGVsbGlnZW50LmV2b2x1dGlvbi5tZXNzYWdpbmcuc3Vic2NyaWJlKCdpZ25vcmVVc2VyUmVjb21tZW5kYXRpb24nLCBmdW5jdGlvbihkYXRhKSB7DQoJCQkJdmFyIGUgPSAkKGRhdGEudGFyZ2V0KTsNCgkJCQl2YXIgdXNlcklkID0gZS5kYXRhKCd1c2VyaWQnKTsNCg0KCQkJCSQudGVsbGlnZW50LmV2b2x1dGlvbi5wb3N0KHsNCgkgICAgICAgICAgICAJdXJsOiAkLnRlbGxpZ2VudC5ldm9sdXRpb24uc2l0ZS5nZXRCYXNlVXJsKCkgKyAnYXBpLmFzaHgvdjIvdXNlci9yZWNvbW1lbmRhdGlvbi9pZ25vcmUve1VzZXJJZH0uanNvbicsDQoJICAgICAgICAgICAgCWRhdGE6IHsNCgkgICAgICAgICAgICAJCVVzZXJJZDogdXNlcklkDQoJICAgICAgICAgICAgCX0sDQoJICAgICAgICAgICAgCXN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3BvbnNlKSB7DQoJICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnRodW1ibmFpbHNDb250YWluZXIuZmluZCgnLmNvbnRlbnQtaXRlbVtkYXRhLXVzZXJpZD0iJyArIHVzZXJJZCArICciXScpLmZhZGVPdXQoJ2Zhc3QnKTsNCgkgICAgICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLnRyaWdnZXIoJ2NsaWNrJyk7DQoJICAgICAgICAgICAgICAgIH0NCgkgICAgICAgICAgICB9KTsNCgkJCX0pOw0KDQoJCQkkLnRlbGxpZ2VudC5ldm9sdXRpb24ubWVzc2FnaW5nLnN1YnNjcmliZSgnc2VhcmNoLnJlZ2lzdGVyRmlsdGVycycsIGZ1bmN0aW9uKGRhdGEpIHsNCgkJCQlpZiAoZGF0YS5zY29wZS5rZXkgPT0gJ2FueXdoZXJlJykgew0KCQkJCQlkYXRhLnJlZ2lzdGVyKHsNCgkJCQkJCW5hbWU6IGNvbnRleHQuc2VhcmNoRmlsdGVyVGV4dCwNCgkJCQkJCXF1ZXJ5OiBmdW5jdGlvbihxdWVyeSwgY29tcGxldGUpIHsNCgkJCQkJCQkkLnRlbGxpZ2VudC5ldm9sdXRpb24uZ2V0KHsNCgkJCQkJCQkJdXJsOiBjb250ZXh0LnNlYXJjaFVybCwNCgkJCQkJCQkJZGF0YTogew0KCQkJCQkJCQkJd19xdWVyeTogcXVlcnkucXVlcnksDQoJCQkJCQkJCQl3X3BhZ2VJbmRleDogcXVlcnkucGFnZUluZGV4DQoJCQkJCQkJCX0sDQoJCQkJCQkJCXN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3BvbnNlKSB7DQoJCQkJCQkJCQljb21wbGV0ZShyZXNwb25zZSk7DQoJCQkJCQkJCX0NCgkJCQkJCQl9KTsNCgkJCQkJCX0sDQoJCQkJCQlhZHZhbmNlZFNlYXJjaFVybDogZnVuY3Rpb24ocXVlcnkpIHsNCgkJCQkJCQlyZXR1cm4gbnVsbDsNCgkJCQkJCX0sDQoJCQkJCQlpc0RlZmF1bHQ6IGNvbnRleHQuc2VhcmNoRmlsdGVyRGVmYXVsdA0KCQkJCQl9KTsNCgkJCQl9DQoJCQl9KTsNCgkJfQ0KCX07DQoNCg0KDQoJaWYgKHR5cGVvZiAkLnRlbGxpZ2VudCA9PT0gJ3VuZGVmaW5lZCcpIHsgJC50ZWxsaWdlbnQgPSB7fTsgfQ0KCWlmICh0eXBlb2YgJC50ZWxsaWdlbnQuZXZvbHV0aW9uID09PSAndW5kZWZpbmVkJykgeyAkLnRlbGxpZ2VudC5ldm9sdXRpb24gPSB7fTsgfQ0KCWlmICh0eXBlb2YgJC50ZWxsaWdlbnQuZXZvbHV0aW9uLndpZGdldHMgPT09ICd1bmRlZmluZWQnKSB7ICQudGVsbGlnZW50LmV2b2x1dGlvbi53aWRnZXRzID0ge307IH0NCgkkLnRlbGxpZ2VudC5ldm9sdXRpb24ud2lkZ2V0cy5mcmllbmRzaGlwTGlzdCA9IGFwaTsNCg0KfShqUXVlcnksIHdpbmRvdykpOw0K</file>
    		</files>
    	</scriptedContentFragment>
    </scriptedContentFragments>

    Hope this helps.

  • Hi Michael is this due to be implemented as the v12 widget doesnt appear to include these changes ?

  • Verint | Telligent Community
    0 Verint | Telligent Community
    TE-15884: Friendship request messages not presented without truncation in the UI has been completed for 12.1.1, 11.1.11, 12.0.5