content: use AppleScript version "2.4"
  use scripting additions
  use framework "Foundation"
  use framework "ApplicationServices"
  use framework "Quartz"
  
  
  tell application "Xcode"
  	activate
  	tell application "System Events"
  		tell process "Xcode"
  			my displayOrganizer()
  			delay 1
  			
  			my arrangePositionOfWindow()
  			my clickRadioButtonOfMetricsViewer()
  			
  			set total_row_list to my getAllAppsFromTable()
  			set visible_row_list to my getVisibleAppsFromTable()
  			
  			set total_row_count to count of total_row_list
  			set visible_row_count to count of visible_row_list
  			
  			tell my NumberOfScrolling to calculate(total_row_count, visible_row_count)
  			set start_pos to 1
  			
  			repeat result of NumberOfScrolling times
  				my scrollDownForScrollingToTop()
  			end repeat
  			
  			repeat result of NumberOfScrolling times
  				tell my TableRowsClicker to calculateVisibleRows()
  				tell my TableRowsClicker to clickStepByStep(start_pos)
  				
  				my scrollUp()
  				delay 1
  				
  				set start_pos to start_pos + (row_count_in_scroll of TableRowsClicker)
  			end repeat
  		end tell
  	end tell
  end tell
  
  -- Script Object
  
  script TableRowsClicker
  	property row_list_in_scroll : []
  	property row_count_in_scroll : 0
  	
  	on calculateVisibleRows()
  		tell application "System Events"
  			tell process "Xcode"
  				set my row_list_in_scroll to value of attribute "AXVisibleRows" of table 1 of scroll area 1 of splitter group 1 of window 1
  				set my row_count_in_scroll to (count of row_list_in_scroll) - 1
  			end tell
  		end tell
  	end calculateVisibleRows
  	
  	on clickStepByStep(start_pos)
  		tell application "System Events"
  			tell process "Xcode"
  				
  				set end_pos to start_pos + (my row_count_in_scroll)
  				
  				repeat with elem_pos from start_pos to end_pos by 1
  					if elem_pos > my total_row_count then
  						exit repeat
  					end if
  					
  					set row_elem to my getRowElement(elem_pos)
  					set pos to position of row_elem
  					my clickAt(item 1 of pos, item 2 of pos)
  					
  					my waitForDownloading()
  				end repeat
  				
  			end tell
  		end tell
  	end clickStepByStep
  	
  	on getRowElement(pos)
  		tell application "System Events"
  			tell process "Xcode"
  				return row pos of table 1 of scroll area 1 of splitter group 1 of window 1
  			end tell
  		end tell
  	end getRowElement
  	
  	on waitForDownloading()
  		tell application "System Events"
  			tell process "Xcode"
  				repeat 100 times
  					delay 1
  					if exists static text 1 of splitter group 0 of splitter group 0 of window 1 then
  						set label to value of static text 1 of splitter group 0 of splitter group 0 of window 1
  					else
  						exit repeat
  					end if
  					
  					log label
  					if my checkIfDownloadedState(label) then
  						exit repeat
  					end if
  				end repeat
  				
  			end tell
  		end tell
  	end waitForDownloading
  	
  	on checkIfDownloadedState(label)
  		return label = "No Metrics" or label = "Last Updated Today" or label = "Unable to Read Metrics" or label begins with "An error occurred"
  	end checkIfDownloadedState
  end script
  
  script NumberOfScrolling
  	property result : 0
  	
  	on calculate(total_row_count, visible_row_count)
  		tell application "System Events"
  			tell process "Xcode"
  				set scroll_div to total_row_count div visible_row_count
  				set scroll_mod to total_row_count mod visible_row_count
  				
  				
  				if 0 < scroll_mod then
  					set my result to scroll_div + 1
  				else
  					set my result to scroll_div
  				end if
  			end tell
  		end tell
  	end calculate
  end script
  
  -- Functions
  
  on scrollDownForScrollingToTop()
  	tell application "System Events"
  		tell process "Xcode"
  			perform action "AXScrollDownByPage" of scroll area 1 of splitter group 1 of window 1
  		end tell
  	end tell
  end scrollDownForScrollingToTop
  
  on scrollUp()
  	tell application "System Events"
  		tell process "Xcode"
  			perform action "AXScrollUpByPage" of scroll area 1 of splitter group 1 of window 1
  		end tell
  	end tell
  end scrollUp
  
  on displayOrganizer()
  	tell application "System Events"
  		tell process "Xcode"
  			click menu item "Organizer" of menu 1 of menu bar item "Window" of menu bar 1
  		end tell
  	end tell
  end displayOrganizer
  
  on arrangePositionOfWindow()
  	tell application "Finder"
  		set screen_height to (do shell script "system_profiler SPDisplaysDataType | awk '/Resolution/{print $4}'")
  	end tell
  	
  	tell application "System Events"
  		tell process "Xcode"
  			set position of window 1 to {0, 0}
  			set size of window 1 to {300, screen_height}
  		end tell
  	end tell
  end arrangePositionOfWindow
  
  on clickRadioButtonOfMetricsViewer()
  	tell application "System Events"
  		tell process "Xcode"
  			click radio button 4 of radio group 1 of group 1 of toolbar 1 of window 1
  		end tell
  	end tell
  end clickRadioButtonOfMetricsViewer
  
  on getAllAppsFromTable()
  	tell application "System Events"
  		tell process "Xcode"
  			set total_row_list to row of table 1 of scroll area 1 of splitter group 1 of window 1
  		end tell
  	end tell
  	return total_row_list
  end getAllAppsFromTable
  
  on getVisibleAppsFromTable()
  	tell application "System Events"
  		tell process "Xcode"
  			set visible_row_list to value of attribute "AXVisibleRows" of table 1 of scroll area 1 of splitter group 1 of window 1
  		end tell
  	end tell
  	return visible_row_list
  end getVisibleAppsFromTable
  
  
  on clickAt(newX, newY)
  	
  	set pt to current application's CGPointZero
  	set x of pt to newX
  	set y of pt to newY
  	
  	current application's CGPostMouseEvent(pt, 1, 1, 1)
  	current application's CGPostMouseEvent(pt, 1, 1, 0)
  	
  end clickAt
  