<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>macOS &#8211; Wade Tregaskis</title>
	<atom:link href="https://wadetregaskis.com/tags/macos/feed/" rel="self" type="application/rss+xml" />
	<link>https://wadetregaskis.com</link>
	<description></description>
	<lastBuildDate>Fri, 09 Feb 2024 23:06:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wadetregaskis.com/wp-content/uploads/2016/03/Stitch-512x512-1-256x256.png</url>
	<title>macOS &#8211; Wade Tregaskis</title>
	<link>https://wadetregaskis.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">226351702</site>	<item>
		<title>Mail &#038; Preview working together</title>
		<link>https://wadetregaskis.com/mail-preview-working-together/</link>
					<comments>https://wadetregaskis.com/mail-preview-working-together/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 09 Feb 2024 23:06:27 +0000</pubDate>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Apple Mail]]></category>
		<category><![CDATA[Apple Preview]]></category>
		<category><![CDATA[dialog]]></category>
		<category><![CDATA[Happy]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[PDF]]></category>
		<guid isPermaLink="false">https://wadetregaskis.com/?p=7685</guid>

					<description><![CDATA[It&#8217;s the little things that sometimes impress me the most. Like when this dialog appeared: …after I&#8217;d filled out a form PDF that was emailed to me. It had exactly the option I wanted first and foremost, to send the completed PDF back to the sender. Sure, manually digging up the completed PDF from disk&#8230; <a class="read-more-link" href="https://wadetregaskis.com/mail-preview-working-together/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>It&#8217;s the little things that sometimes impress me the most.  Like when this dialog appeared:</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="372" height="450" src="https://wadetregaskis.com/wp-content/uploads/2024/02/Save-Changes-dialog-for-PDF-form-related-to-an-email-message.webp" alt="Screenshot of a macOS dialog saying: &quot;Do you want to save the changes made to the document &quot;Waste Disposal Forms requiring signatures copy&quot;, with the buttons: &quot;Reply to lora…&quot;, &quot;New Mail Message&quot;, &quot;Save&quot;, and &quot;Cancel&quot;." class="wp-image-7686" srcset="https://wadetregaskis.com/wp-content/uploads/2024/02/Save-Changes-dialog-for-PDF-form-related-to-an-email-message.webp 372w, https://wadetregaskis.com/wp-content/uploads/2024/02/Save-Changes-dialog-for-PDF-form-related-to-an-email-message-212x256.webp 212w, https://wadetregaskis.com/wp-content/uploads/2024/02/Save-Changes-dialog-for-PDF-form-related-to-an-email-message@2x.webp 744w" sizes="(max-width: 372px) 100vw, 372px" /></figure>
</div>


<p>…after I&#8217;d filled out a form PDF that was emailed to me.  It had exactly the option I wanted first and foremost, to send the completed PDF back to the sender.</p>



<p>Sure, manually digging up the completed PDF from disk and dragging it into a Mail Compose [Reply] window isn&#8217;t <em>hard</em>, but it just feels so <em>thoughtful</em> when the system saves me the effort.  Knowing that someone, somewhere, actually thought through how Mail &amp; Preview might be used, and thought enough of their users to go to the trouble of implementing this.</p>



<p>Kudos to whomever was behind this sweet little feature.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/mail-preview-working-together/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<media:content url="https://wadetregaskis.com/wp-content/uploads/2024/02/Save-Changes-dialog-for-PDF-form-related-to-an-email-message.webp" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">7685</post-id>	</item>
		<item>
		<title>Reminder: macOS system frameworks binaries are hidden (since Big Sur)</title>
		<link>https://wadetregaskis.com/reminder-macos-system-frameworks-binaries-are-hidden-since-big-sur/</link>
					<comments>https://wadetregaskis.com/reminder-macos-system-frameworks-binaries-are-hidden-since-big-sur/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Tue, 23 Jan 2024 18:59:12 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Howto]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Broken by design]]></category>
		<category><![CDATA[dyld]]></category>
		<category><![CDATA[dyld-shared-cache-extractor]]></category>
		<category><![CDATA[Hopper]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[macOS Big Sur]]></category>
		<category><![CDATA[Sad]]></category>
		<category><![CDATA[Undocumented]]></category>
		<guid isPermaLink="false">https://wadetregaskis.com/?p=7503</guid>

					<description><![CDATA[Every now and again I&#8217;ll go to do something really innocuous with an Apple framework, like disassemble it in Hopper or check the link headers. And every. single. time. I forget that Apple did some really weird shit in Big Sur, and removed the binaries. $ ls -lh /System/Library/Frameworks/AppKit.framework/Versions/Current/AppKit ls: /System/Library/Frameworks/AppKit.framework/Versions/Current/AppKit: No such file or&#8230; <a class="read-more-link" href="https://wadetregaskis.com/reminder-macos-system-frameworks-binaries-are-hidden-since-big-sur/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>Every now and again I&#8217;ll go to do something really innocuous with an Apple framework, like disassemble it in <a href="https://www.hopperapp.com" data-wpel-link="external" target="_blank" rel="external noopener">Hopper</a> or check the link headers.  And <em>every. single. time</em>. I forget that Apple did some really weird shit in Big Sur, and removed the binaries.</p>



<pre class="wp-block-preformatted">$ ls -lh /System/Library/Frameworks/AppKit.framework/Versions/Current/AppKit
ls: /System/Library/Frameworks/AppKit.framework/Versions/Current/AppKit: No such file or directory</pre>



<p>WTF, mate?</p>



<p>Invariably I spend half an hour websearching around to try to figure out how the hell my system got so broken, and how it&#8217;s possible to even boot macOS in such a corrupt state, until <em>finally</em> I chance upon <a href="https://mjtsai.com/blog/2020/06/26/reverse-engineering-macos-11-0/" data-wpel-link="external" target="_blank" rel="external noopener">Michael Tsai&#8217;s excellent summary of how Apple broke their frameworks starting in Big Sur</a>.</p>



<p>The good news for Hopper is that it has since been updated to work around this &#8211; you can access the Apple framework binaries through <em>File</em> > <em>Read File from DYLD Cache…</em>  There&#8217;s also tools like <a href="https://github.com/keith/dyld-shared-cache-extractor" data-wpel-link="external" target="_blank" rel="external noopener">dyld-shared-cache-extractor</a> which can resurrect the binaries from the cache.</p>



<p>Note also that in Sonoma, at least, the cache lives at <code>/System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/</code> (in previous macOS releases it was apparently in <code>/System/Library/dyld/</code>).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/reminder-macos-system-frameworks-binaries-are-hidden-since-big-sur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7503</post-id>	</item>
		<item>
		<title>How well do you know your macOS keyboard shortcuts?</title>
		<link>https://wadetregaskis.com/how-well-do-you-know-your-macos-keyboard-shortcuts/</link>
					<comments>https://wadetregaskis.com/how-well-do-you-know-your-macos-keyboard-shortcuts/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 05 Jan 2024 03:31:17 +0000</pubDate>
				<category><![CDATA[Quizzes]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[keyboard shortcuts]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[macOS]]></category>
		<guid isPermaLink="false">https://wadetregaskis.com/?p=7356</guid>

					<description><![CDATA[A little quiz to separate the Mac power users from the padawans. <a class="read-more-link" href="https://wadetregaskis.com/how-well-do-you-know-your-macos-keyboard-shortcuts/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[



            <div class='ays-quiz-container ays_quiz_classic_light   ays-quiz-keyboard-active' data-quest-effect='fade'  data-hide-bg-image='false' id='ays-quiz-container-1'>
                
                
                <div class='ays-questions-container'>
                    <div class="ays-quiz-full-screen-wrap">
                <a class="ays-quiz-full-screen-container">
                    <svg xmlns="http://www.w3.org/2000/svg" height="24" fill="#fff" viewBox="0 0 24 24" width="24" class="ays-quiz-close-full-screen">
                        <path d="M0 0h24v24H0z" fill="none"/>
                        <path d="M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"/>
                    </svg>
                    <svg xmlns="http://www.w3.org/2000/svg" height="24" fill="#fff" viewBox="0 0 24 24" width="24" class="ays-quiz-open-full-screen">
                        <path d="M0 0h24v24H0z" fill="none"/>
                        <path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/>
                    </svg>
                </a>
            </div>
                    
                    
                    <form action='' method='post' id='ays_finish_quiz_1' 
                        class='ays-quiz-form enable_correction enable_questions_result '
                    >
            <input type='hidden' value='grid' class='answer_view_class'>
            <input type='hidden' value='' class='ays_qm_enable_arrows'>
            <audio id='ays_quiz_right_ans_sound_1' class='ays_quiz_right_ans_sound' src='https://wadetregaskis.com/wp-content/uploads/2024/01/Silence.m4a'></audio><audio id='ays_quiz_wrong_ans_sound_1' class='ays_quiz_wrong_ans_sound' src='https://wadetregaskis.com/wp-content/uploads/2024/01/Quack.m4a'></audio>
            
            <div class='step active-step'>
                <div class='ays-abs-fs ays-start-page'>
                    
                    
                    <p class='ays-fs-title'>macOS keyboard shortcuts quiz</p>
                    <div class='ays-fs-subtitle'><p><span style="font-size: 72px">⌃⌥⇧⌘🤔</span></p>
</div>
                    <input type='hidden' name='ays_quiz_id' value='1'/>
                    <input type='hidden' name='ays_quiz_finish_nonce' value='75a9f118ef'>
                    <input type='hidden' name='ays_quiz_curent_page_link' class='ays-quiz-curent-page-link' value='https://wadetregaskis.com/tags/macos/feed/'/>
                    <input type='hidden' name='ays_quiz_questions' value='4,7,10,9,11,3,6,13,31,26,28,15,8,12,5,16,27,25,21,30,2,1,14,22,29,19,18,24,20,17,23,32'>
                    
                    
                    
                <div class="ays-quiz-start-button-preloader">
                    <input type='button'  class='ays_next start_button action-button ays_quiz_enable_loader ays-quiz-keyboard-active' disabled='disabled' value='Loading ...' data-enable-leave-page="false" />
                    <img decoding="async" src="https://wadetregaskis.com/wp-content/plugins/quiz-maker/admin/images/loaders/tail-spin.svg" class="ays_quiz_start_button_loader">
                </div>
                    
                    </div>
                </div><div class='step ' data-question-id='4' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>1 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>Some important notes before we begin:</p>
<p>• This quiz assumes default system settings on macOS 14 Sonoma with a generic Apple English keyboard and locale.</p>
<p>• This quiz considers only <em>native</em> Mac behaviour.</p>
<p>• You can click &#8216;Next&#8217; without selecting an answer, but that <em>skips the question</em> and counts as a wrong answer in your final score.</p>
<p>• You cannot change your choice after clicking / tapping an answer.</p>
<p>&nbsp;</p>
<p>Now, before we begin for real, let&#8217;s make sure you understand how quizzes work.  Do you understand how quizzes work?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-4]' id='ays-answer-16-1' value='16'/>

                <label for='ays-answer-16-1' class='  ays_position_initial  ays-quiz-keyboard-label'>No</label><label for='ays-answer-16-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-4]' id='ays-answer-15-1' value='15'/>

                <label for='ays-answer-15-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Yes</label><label for='ays-answer-15-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['4'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ' style='display:none'>
                            <p>This is going to be fun for you, then. 😝</p>

                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='7' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>2 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this symbol mean:</p>
<p><span style="font-size: 72px">⌘</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-7]' id='ays-answer-31-1' value='31'/>

                <label for='ays-answer-31-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Apple</label><label for='ays-answer-31-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-7]' id='ays-answer-32-1' value='32'/>

                <label for='ays-answer-32-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Option</label><label for='ays-answer-32-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-7]' id='ays-answer-29-1' value='29'/>

                <label for='ays-answer-29-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Place of interest</label><label for='ays-answer-29-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-7]' id='ays-answer-28-1' value='28'/>

                <label for='ays-answer-28-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Control</label><label for='ays-answer-28-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-7]' id='ays-answer-30-1' value='30'/>

                <label for='ays-answer-30-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Function</label><label for='ays-answer-30-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-7]' id='ays-answer-27-1' value='27'/>

                <label for='ays-answer-27-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Command</label><label for='ays-answer-27-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['7'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <h3>A little bit of history</h3>
<p>The Command key symbol, also known as the &#8220;looped square&#8221;, &#8220;Saint John&#8217;s Arms&#8221;, &#8220;Bowen knot&#8221;, &#8220;clover&#8221;, or &#8220;propeller&#8221; symbol, first appeared on <a href="https://www.flickr.com/photos/heritagefutures/3211074870" data-wpel-link="external" target="_blank" rel="external noopener">the keyboard</a> &amp; in the menus of the original Macintosh (1984).</p>
<p><a href="https://wadetregaskis.com/wp-content/uploads/2024/01/System-1-0-File-menu.webp" data-wpel-link="internal"><img decoding="async" class="aligncenter size-large wp-image-7364" src="https://wadetregaskis.com/wp-content/uploads/2024/01/System-1-0-File-menu.webp" alt="Screenshot from Apple System 1.0 (the OS from the original Macintosh in 1984) showing the contents of the Finder File menu." width="512" height="342" srcset="https://wadetregaskis.com/wp-content/uploads/2024/01/System-1-0-File-menu-256x171@2x.webp 512w, https://wadetregaskis.com/wp-content/uploads/2024/01/System-1-0-File-menu-256x171.webp 256w" sizes="(max-width: 512px) 100vw, 512px" /></a></p>
<p>It replaced the use of the Apple logo () on the Apple keys that were present on the keyboards for the <a href="https://www.flickr.com/photos/37796451@N00/4871313185" data-wpel-link="external" target="_blank" rel="external noopener">Apple IIe</a>, <a href="https://www.flickr.com/photos/teflon/2865505108" data-wpel-link="external" target="_blank" rel="external noopener">Apple III</a>, and the <a href="https://www.flickr.com/photos/75693106@N05/6946153772" data-wpel-link="external" target="_blank" rel="external noopener">Lisa</a>.  Unlike its predecessors, the Macintosh would show the keyboard shortcuts for menu commands in the menus themselves, using symbols for modifier keys like Command.  Since the symbol would be displayed <em>many</em> times all over the menus, <a href="https://www.folklore.org/Swedish_Campground.html" data-wpel-link="external" target="_blank" rel="external noopener">Steve Jobs felt use of the Apple logo would be dilute its value</a>.  He tasked <a href="https://kareprints.com/pages/about" data-wpel-link="external" target="_blank" rel="external noopener">Susan Kare</a>, principal &amp; beloved visual designer for the original Macintosh, to come up with a new symbol.  <a href="https://web.archive.org/web/20150527143227/https://web.stanford.edu/dept/SUL/library/mac/primary/interviews/kare/mac.html" data-wpel-link="external" target="_blank" rel="external noopener">She found the iconic symbol after pouring through book collections of symbols, looking for something &#8216;abstract&#8217;</a>.  It had previously been used very little, mainly just as a &#8216;place of interest&#8217; indicator on maps in some Nordic countries.</p>
<p><a href="https://www.unicodepedia.com/unicode/miscellaneous-technical/2318/place-of-interest-sign/" data-wpel-link="external" target="_blank" rel="external noopener">In Unicode it is formally still the &#8220;Place of interest sign&#8221;</a>, even though most of the world now knows it as the Command key symbol.</p>
<p>The Apple logo persisted alongside ⌘ on the key <a href="https://www.macworld.com/article/224807/think-retro-open-apple-closed-apple.html" data-wpel-link="external" target="_blank" rel="external noopener">until 2007</a>!</p>
<p>See its origin for yourself in <a href="https://infinitemac.org/1984/System%201.0" data-wpel-link="external" target="_blank" rel="external noopener">Macintosh System 1.0</a>!</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='10' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>3 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this symbol mean:</p>
<p><span style="font-size: 72px">⌥</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-10]' id='ays-answer-45-1' value='45'/>

                <label for='ays-answer-45-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Place of interest</label><label for='ays-answer-45-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-10]' id='ays-answer-44-1' value='44'/>

                <label for='ays-answer-44-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Control</label><label for='ays-answer-44-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-10]' id='ays-answer-43-1' value='43'/>

                <label for='ays-answer-43-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Command</label><label for='ays-answer-43-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-10]' id='ays-answer-48-1' value='48'/>

                <label for='ays-answer-48-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Option</label><label for='ays-answer-48-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-10]' id='ays-answer-46-1' value='46'/>

                <label for='ays-answer-46-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Function</label><label for='ays-answer-46-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-10]' id='ays-answer-47-1' value='47'/>

                <label for='ays-answer-47-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Apple</label><label for='ays-answer-47-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['10'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <h3>A [very] little bit of history</h3>
<p>The Option key replaced the Closed Apple key () from pre-Macintosh Apple computers, for the same reason that the Open Apple key was replaced with the Command key &#8211; to reduce repetition of the Apple logo in the Mac GUI.</p>
<p>It seems to be unknown or at least undocumented as to how the symbol was chosen.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='9' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>4 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this symbol mean:</p>
<p><span style="font-size: 72px">⌃</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-9]' id='ays-answer-39-1' value='39'/>

                <label for='ays-answer-39-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Place of interest</label><label for='ays-answer-39-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-9]' id='ays-answer-40-1' value='40'/>

                <label for='ays-answer-40-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Function</label><label for='ays-answer-40-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-9]' id='ays-answer-37-1' value='37'/>

                <label for='ays-answer-37-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Command</label><label for='ays-answer-37-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-9]' id='ays-answer-38-1' value='38'/>

                <label for='ays-answer-38-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Control</label><label for='ays-answer-38-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-9]' id='ays-answer-42-1' value='42'/>

                <label for='ays-answer-42-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Option</label><label for='ays-answer-42-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-9]' id='ays-answer-41-1' value='41'/>

                <label for='ays-answer-41-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Apple</label><label for='ays-answer-41-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['9'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <h3>A little history</h3>
<p>The use of a caret (also known as a chevron or circumflex) to symbolise the Control key appears to date back to <a href="http://bitsavers.org/pdf/dec/pdp6/PDP-6_TimsharingBroch.pdf#page=4" data-wpel-link="external" target="_blank" rel="external noopener">at least the PDP-6 era</a> (1963), where an upwards-pointing arrow was used.  <a href="https://www.sensitiveresearch.com/Archive/CharCodeHist/X3.4-1963/page5.JPG" data-wpel-link="external" target="_blank" rel="external noopener">That symbol was part of the very first ASCII standard</a> (<a href="https://www.sensitiveresearch.com/Archive/CharCodeHist/X3.4-1963/index.html" data-wpel-link="external" target="_blank" rel="external noopener">ASA standard X3.4-1963</a>) as 0x5E, but a few years later that character was changed to the now-familiar caret (I believe in X3.4-1967, although the closest I can find an actual copy of is <a href="https://archive.org/details/enf-ascii-1968-1970/page/n5/mode/2up" data-wpel-link="external" target="_blank" rel="external noopener">X3.4-1968</a>).  You can read <a href="https://www.aivosto.com/articles/charsets-7bit.html" data-wpel-link="external" target="_blank" rel="external noopener">the full history of ASCII</a>, if you&#8217;re interested.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='11' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>5 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this symbol mean:</p>
<p><span style="font-size: 72px">⇧</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-11]' id='ays-answer-50-1' value='50'/>

                <label for='ays-answer-50-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Control</label><label for='ays-answer-50-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-11]' id='ays-answer-52-1' value='52'/>

                <label for='ays-answer-52-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Function</label><label for='ays-answer-52-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-11]' id='ays-answer-54-1' value='54'/>

                <label for='ays-answer-54-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Option</label><label for='ays-answer-54-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-11]' id='ays-answer-49-1' value='49'/>

                <label for='ays-answer-49-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Command</label><label for='ays-answer-49-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-11]' id='ays-answer-53-1' value='53'/>

                <label for='ays-answer-53-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Apple</label><label for='ays-answer-53-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-11]' id='ays-answer-51-1' value='51'/>

                <label for='ays-answer-51-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Shift</label><label for='ays-answer-51-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['11'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='3' data-type='radio'>
                    
                    <div class='ays_question_hint_container '>
                        <i class='ays_fa ays_fa_info_circle ays_question_hint ays-quiz-keyboard-active' tabindex='0' aria-hidden='true'></i>
                        <span class='ays_question_hint_text'><p>It&#8217;s been the same shortcut since the original Macintosh.</p>
</span>
                    </div>
                    
                    <p class='ays-question-counter animated'>6 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you take a fullscreen screen shot?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-3]' id='ays-answer-10-1' value='10'/>

                <label for='ays-answer-10-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘P</label><label for='ays-answer-10-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-3]' id='ays-answer-11-1' value='11'/>

                <label for='ays-answer-11-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘P</label><label for='ays-answer-11-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-3]' id='ays-answer-7-1' value='7'/>

                <label for='ays-answer-7-1' class='  ays_position_initial  ays-quiz-keyboard-label'>PrtScn</label><label for='ays-answer-7-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-3]' id='ays-answer-8-1' value='8'/>

                <label for='ays-answer-8-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘3</label><label for='ays-answer-8-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-3]' id='ays-answer-9-1' value='9'/>

                <label for='ays-answer-9-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘4</label><label for='ays-answer-9-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['3'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Fun fact:  Apple&#8217;s very first operating system technical note, <a href="https://developer.apple.com/library/archive/technotes/os/os_01.html" data-wpel-link="external" target="_blank" rel="external noopener">OS01</a>, was to call out the existence of command-shift-N shortcuts, including ⇧⌘3.</p>
<p>⇧⌘4 also existed from the beginning, although its original behaviour was to <em>print</em> the active window (or the whole screen if Caps Lock was enabled), rather than save to a file!</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='6' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>7 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you cycle through open applications (in order from most recently used to least)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-6]' id='ays-answer-24-1' value='24'/>

                <label for='ays-answer-24-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘→</label><label for='ays-answer-24-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-6]' id='ays-answer-22-1' value='22'/>

                <label for='ays-answer-22-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘⇥</label><label for='ays-answer-22-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-6]' id='ays-answer-26-1' value='26'/>

                <label for='ays-answer-26-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘A</label><label for='ays-answer-26-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-6]' id='ays-answer-21-1' value='21'/>

                <label for='ays-answer-21-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘`</label><label for='ays-answer-21-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-6]' id='ays-answer-25-1' value='25'/>

                <label for='ays-answer-25-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘]</label><label for='ays-answer-25-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-6]' id='ays-answer-23-1' value='23'/>

                <label for='ays-answer-23-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃→</label><label for='ays-answer-23-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['6'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Tip: ⇧⌘⇥ cycles in the opposite direction, i.e. <em>least</em> recently used application first.</p>
<p>Pro tip: you can release the ⇥ key while still holding ⌘ to keep the application switcher on screen.  You can then hit ⇥ or ⇧⇥ successive times to move through the applications at your own pace.  Or interact with them via the mouse (including dropping things onto them, such as files to open).</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='13' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>8 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you minimise the active window?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-13]' id='ays-answer-62-1' value='62'/>

                <label for='ays-answer-62-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘H</label><label for='ays-answer-62-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-13]' id='ays-answer-61-1' value='61'/>

                <label for='ays-answer-61-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘M</label><label for='ays-answer-61-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-13]' id='ays-answer-64-1' value='64'/>

                <label for='ays-answer-64-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘W</label><label for='ays-answer-64-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-13]' id='ays-answer-63-1' value='63'/>

                <label for='ays-answer-63-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘C</label><label for='ays-answer-63-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['13'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='31' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>9 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you insert an ellipsis (…)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-31]' id='ays-answer-157-1' value='157'/>

                <label for='ays-answer-157-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌥;</label><label for='ays-answer-157-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-31]' id='ays-answer-155-1' value='155'/>

                <label for='ays-answer-155-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥.</label><label for='ays-answer-155-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-31]' id='ays-answer-154-1' value='154'/>

                <label for='ays-answer-154-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥;</label><label for='ays-answer-154-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-31]' id='ays-answer-156-1' value='156'/>

                <label for='ays-answer-156-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌥.</label><label for='ays-answer-156-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['31'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>In <em>some</em> applications you can also just type three periods followed by a space, and auto-replacement will turn the three periods into an actual ellipsis.  But this is not reliable across applications, even amongst native Mac apps.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='26' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>10 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this do in the Finder:</p>
<p><span style="font-size: 36px">⇧⌘A</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-26]' id='ays-answer-135-1' value='135'/>

                <label for='ays-answer-135-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Creates a zip archive of the selected items</label><label for='ays-answer-135-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-26]' id='ays-answer-133-1' value='133'/>

                <label for='ays-answer-133-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Creates an alias of the select item(s)</label><label for='ays-answer-133-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-26]' id='ays-answer-131-1' value='131'/>

                <label for='ays-answer-131-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Selects all items</label><label for='ays-answer-131-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-26]' id='ays-answer-132-1' value='132'/>

                <label for='ays-answer-132-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Selects all files (but not folders)</label><label for='ays-answer-132-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-26]' id='ays-answer-134-1' value='134'/>

                <label for='ays-answer-134-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Jumps to the Applications folder</label><label for='ays-answer-134-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['26'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='28' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>11 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>In a <em>native</em> Mac program, how do you hyperlink the selected text (where applicable)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-28]' id='ays-answer-141-1' value='141'/>

                <label for='ays-answer-141-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘H</label><label for='ays-answer-141-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-28]' id='ays-answer-140-1' value='140'/>

                <label for='ays-answer-140-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘L</label><label for='ays-answer-140-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-28]' id='ays-answer-143-1' value='143'/>

                <label for='ays-answer-143-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⌘U</label><label for='ays-answer-143-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-28]' id='ays-answer-142-1' value='142'/>

                <label for='ays-answer-142-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘K</label><label for='ays-answer-142-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['28'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='15' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>12 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What do these do:</p>
<p><span style="font-size: 36px">⌥⌘C / ⌥⌘V</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-15]' id='ays-answer-72-1' value='72'/>

                <label for='ays-answer-72-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Copy / paste text</label><label for='ays-answer-72-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-15]' id='ays-answer-74-1' value='74'/>

                <label for='ays-answer-74-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Nothing (beeps)</label><label for='ays-answer-74-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-15]' id='ays-answer-76-1' value='76'/>

                <label for='ays-answer-76-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Clear / reset the current text field</label><label for='ays-answer-76-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-15]' id='ays-answer-71-1' value='71'/>

                <label for='ays-answer-71-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Copy / paste text styling</label><label for='ays-answer-71-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-15]' id='ays-answer-75-1' value='75'/>

                <label for='ays-answer-75-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Cut text / paste and clear the clipboard</label><label for='ays-answer-75-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-15]' id='ays-answer-73-1' value='73'/>

                <label for='ays-answer-73-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Copy / paste text, removing styling information</label><label for='ays-answer-73-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['15'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='8' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>13 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you type the  symbol?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-8]' id='ays-answer-34-1' value='34'/>

                <label for='ays-answer-34-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥A</label><label for='ays-answer-34-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-8]' id='ays-answer-33-1' value='33'/>

                <label for='ays-answer-33-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⇧K</label><label for='ays-answer-33-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-8]' id='ays-answer-35-1' value='35'/>

                <label for='ays-answer-35-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘A</label><label for='ays-answer-35-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-8]' id='ays-answer-36-1' value='36'/>

                <label for='ays-answer-36-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥5</label><label for='ays-answer-36-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['8'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='12' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>14 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you cycle through open windows within the active application?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-12]' id='ays-answer-60-1' value='60'/>

                <label for='ays-answer-60-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘A</label><label for='ays-answer-60-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-12]' id='ays-answer-58-1' value='58'/>

                <label for='ays-answer-58-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘→</label><label for='ays-answer-58-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-12]' id='ays-answer-56-1' value='56'/>

                <label for='ays-answer-56-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘⇥</label><label for='ays-answer-56-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-12]' id='ays-answer-57-1' value='57'/>

                <label for='ays-answer-57-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃→</label><label for='ays-answer-57-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-12]' id='ays-answer-59-1' value='59'/>

                <label for='ays-answer-59-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘]</label><label for='ays-answer-59-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-12]' id='ays-answer-55-1' value='55'/>

                <label for='ays-answer-55-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘`</label><label for='ays-answer-55-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['12'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Tip: you can use ⇧⌘` to cycle through the windows in the reverse order.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='5' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>15 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you show the dictionary definition of the selected word (or phrase)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-5]' id='ays-answer-20-1' value='20'/>

                <label for='ays-answer-20-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Trick question: there is no such shortcut</label><label for='ays-answer-20-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-5]' id='ays-answer-19-1' value='19'/>

                <label for='ays-answer-19-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘D</label><label for='ays-answer-19-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-5]' id='ays-answer-18-1' value='18'/>

                <label for='ays-answer-18-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⌘D</label><label for='ays-answer-18-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-5]' id='ays-answer-17-1' value='17'/>

                <label for='ays-answer-17-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘D</label><label for='ays-answer-17-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['5'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Tip: Apple build in a large number of translating dictionaries, e.g. for Spanish to English.  They provide translations and definitions in your native language.  You can enable them in the Settings for the Dictionary app.</p>
<p>Pro tip: Apple include a special dictionary of proper nouns for Apple products, such as macOS releases.  Helpful if you can&#8217;t remember the name of the operating system you were running just last year. 😜</p>
<p><a href="https://wadetregaskis.com/wp-content/uploads/2024/01/Ventura-Definition-pop-up-1.webp" data-wpel-link="internal"><img decoding="async" class="aligncenter size-large wp-image-7363" src="https://wadetregaskis.com/wp-content/uploads/2024/01/Ventura-Definition-pop-up-1.webp" alt="" width="462" height="478" srcset="https://wadetregaskis.com/wp-content/uploads/2024/01/Ventura-Definition-pop-up-1.webp 462w, https://wadetregaskis.com/wp-content/uploads/2024/01/Ventura-Definition-pop-up-1-247x256.webp 247w, https://wadetregaskis.com/wp-content/uploads/2024/01/Ventura-Definition-pop-up-1@2x.webp 924w" sizes="(max-width: 462px) 100vw, 462px" /></a></p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='16' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>16 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>In a <em>native</em> Mac application, the Home key moves the focus point to the beginning of the…</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-16]' id='ays-answer-77-1' value='77'/>

                <label for='ays-answer-77-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Line</label><label for='ays-answer-77-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-16]' id='ays-answer-81-1' value='81'/>

                <label for='ays-answer-81-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Word</label><label for='ays-answer-81-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-16]' id='ays-answer-80-1' value='80'/>

                <label for='ays-answer-80-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Page</label><label for='ays-answer-80-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-16]' id='ays-answer-78-1' value='78'/>

                <label for='ays-answer-78-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Paragraph</label><label for='ays-answer-78-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-16]' id='ays-answer-79-1' value='79'/>

                <label for='ays-answer-79-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Document</label><label for='ays-answer-79-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['16'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Tip: in non-native applications which get this wrong, an alternative shortcut that they sometimes get right is ⌘↑.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='27' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>17 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>When clicking a disclosure triangle in a hierarchical list view, what modifier causes it to expand / contract the target item <em>and all its children recursively</em>?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-27]' id='ays-answer-138-1' value='138'/>

                <label for='ays-answer-138-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧</label><label for='ays-answer-138-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-27]' id='ays-answer-136-1' value='136'/>

                <label for='ays-answer-136-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥</label><label for='ays-answer-136-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-27]' id='ays-answer-137-1' value='137'/>

                <label for='ays-answer-137-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘</label><label for='ays-answer-137-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-27]' id='ays-answer-139-1' value='139'/>

                <label for='ays-answer-139-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃</label><label for='ays-answer-139-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['27'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='25' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>18 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you jump to your Documents folder in the Finder?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-25]' id='ays-answer-129-1' value='129'/>

                <label for='ays-answer-129-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘G</label><label for='ays-answer-129-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-25]' id='ays-answer-130-1' value='130'/>

                <label for='ays-answer-130-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘D</label><label for='ays-answer-130-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-25]' id='ays-answer-127-1' value='127'/>

                <label for='ays-answer-127-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘H</label><label for='ays-answer-127-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-25]' id='ays-answer-128-1' value='128'/>

                <label for='ays-answer-128-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘O</label><label for='ays-answer-128-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['25'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ' style='display:none'>
                            <p>Don&#8217;t feel too bad, I get this wrong <em>every single time</em>, too.  It&#8217;s an <em>incredibly</em> poor design choice, on Apple&#8217;s part, to use ⇧⌘D for the desktop folder.</p>

                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='21' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>19 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you cycle through find results in reverse order?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-21]' id='ays-answer-109-1' value='109'/>

                <label for='ays-answer-109-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘R</label><label for='ays-answer-109-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-21]' id='ays-answer-107-1' value='107'/>

                <label for='ays-answer-107-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥F</label><label for='ays-answer-107-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-21]' id='ays-answer-110-1' value='110'/>

                <label for='ays-answer-110-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥←</label><label for='ays-answer-110-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-21]' id='ays-answer-108-1' value='108'/>

                <label for='ays-answer-108-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘G</label><label for='ays-answer-108-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['21'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='30' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>20 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What is the traditional Mac way to cancel an operation?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-30]' id='ays-answer-153-1' value='153'/>

                <label for='ays-answer-153-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌥⌫</label><label for='ays-answer-153-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-30]' id='ays-answer-148-1' value='148'/>

                <label for='ays-answer-148-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃C</label><label for='ays-answer-148-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-30]' id='ays-answer-150-1' value='150'/>

                <label for='ays-answer-150-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘.</label><label for='ays-answer-150-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-30]' id='ays-answer-151-1' value='151'/>

                <label for='ays-answer-151-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘S</label><label for='ays-answer-151-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-30]' id='ays-answer-149-1' value='149'/>

                <label for='ays-answer-149-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⎋</label><label for='ays-answer-149-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-30]' id='ays-answer-152-1' value='152'/>

                <label for='ays-answer-152-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Brk</label><label for='ays-answer-152-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['30'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ' style='display:none'>
                            <p>Don&#8217;t feel too bad &#8211; this isn&#8217;t a well-supported shortcut.  Since Mac OS X, ⎋ is sometimes used as well (bleeding over from Windows) and ⌃C likewise from Unix.</p>

                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='2' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>21 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What modifier key do you use to show a Spotlight file result in the Finder?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-2]' id='ays-answer-13-1' value='13'/>

                <label for='ays-answer-13-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Fn</label><label for='ays-answer-13-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-2]' id='ays-answer-12-1' value='12'/>

                <label for='ays-answer-12-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃</label><label for='ays-answer-12-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-2]' id='ays-answer-5-1' value='5'/>

                <label for='ays-answer-5-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘</label><label for='ays-answer-5-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-2]' id='ays-answer-6-1' value='6'/>

                <label for='ays-answer-6-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥</label><label for='ays-answer-6-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-2]' id='ays-answer-4-1' value='4'/>

                <label for='ays-answer-4-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧</label><label for='ays-answer-4-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['2'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='1' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>22 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this do:</p>
<p><span style="font-size: 36px">⌥⌘Space</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-1]' id='ays-answer-14-1' value='14'/>

                <label for='ays-answer-14-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Opens Control Centre</label><label for='ays-answer-14-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-1]' id='ays-answer-3-1' value='3'/>

                <label for='ays-answer-3-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Inserts a non-breaking space character</label><label for='ays-answer-3-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-1]' id='ays-answer-2-1' value='2'/>

                <label for='ays-answer-2-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Opens Spotlight</label><label for='ays-answer-2-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-1]' id='ays-answer-1-1' value='1'/>

                <label for='ays-answer-1-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Opens a Finder window with the search field selected</label><label for='ays-answer-1-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['1'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='14' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>23 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you record a video of the screen (or a subset thereof)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-14]' id='ays-answer-68-1' value='68'/>

                <label for='ays-answer-68-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⇧⌘R</label><label for='ays-answer-68-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-14]' id='ays-answer-69-1' value='69'/>

                <label for='ays-answer-69-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘4, then hold M while selecting the target region</label><label for='ays-answer-69-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-14]' id='ays-answer-70-1' value='70'/>

                <label for='ays-answer-70-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘3 held down for at least one second</label><label for='ays-answer-70-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-14]' id='ays-answer-65-1' value='65'/>

                <label for='ays-answer-65-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘5</label><label for='ays-answer-65-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-14]' id='ays-answer-66-1' value='66'/>

                <label for='ays-answer-66-1' class='  ays_position_initial  ays-quiz-keyboard-label'>No shortcut, only through Quicktime Player</label><label for='ays-answer-66-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-14]' id='ays-answer-67-1' value='67'/>

                <label for='ays-answer-67-1' class='  ays_position_initial  ays-quiz-keyboard-label'>No shortcut, only through 3rd party programs</label><label for='ays-answer-67-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['14'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Strictly-speaking this doesn&#8217;t record <em>only</em> a video &#8211; it brings up a palette which lets you choose between stills &amp; video, among other configuration options.</p>
<p>This feature was introduced relatively recently, in macOS 10.14 Mojave (2018), as part of the addition of <a href="https://support.apple.com/en-au/guide/mac-help/mh26782/mac" data-wpel-link="external" target="_blank" rel="external noopener">the Screenshot app</a> to macOS.</p>
<p>Tip: similar to ⇧⌘4, ⇧⌘5 lets you choose a specific region of the screen.  However, unlike ⇧⌘4, your chosen region persists across invocations &#8211; making it trivial to capture the exact same region of your screen repeatedly.  Very convenient for marketing shots (e.g. light vs dark mode versions).</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='22' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>24 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>In a <em>native</em> Mac app, how do you toggle full screen mode?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-22]' id='ays-answer-113-1' value='113'/>

                <label for='ays-answer-113-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘⏎</label><label for='ays-answer-113-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-22]' id='ays-answer-112-1' value='112'/>

                <label for='ays-answer-112-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘F</label><label for='ays-answer-112-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-22]' id='ays-answer-114-1' value='114'/>

                <label for='ays-answer-114-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⏎</label><label for='ays-answer-114-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-22]' id='ays-answer-111-1' value='111'/>

                <label for='ays-answer-111-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘F</label><label for='ays-answer-111-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-22]' id='ays-answer-115-1' value='115'/>

                <label for='ays-answer-115-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⌘↑</label><label for='ays-answer-115-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['22'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='29' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>25 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>With the cursor at the start of a word, how do you select the word?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-29]' id='ays-answer-147-1' value='147'/>

                <label for='ays-answer-147-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⇧W</label><label for='ays-answer-147-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-29]' id='ays-answer-144-1' value='144'/>

                <label for='ays-answer-144-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⇟</label><label for='ays-answer-144-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-29]' id='ays-answer-145-1' value='145'/>

                <label for='ays-answer-145-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧⌘→</label><label for='ays-answer-145-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-29]' id='ays-answer-146-1' value='146'/>

                <label for='ays-answer-146-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⇧→</label><label for='ays-answer-146-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['29'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Option-arrows, the various modifications thereof, are handy text editing utilities.  For completeness:</p>
<p>⌥← / ⌥→ move the cursor to the start or end (respectively) of the word (in the given direction), jumping word-by-word as necessary.</p>
<p>⌥↑ / ⌥↓ move the cursor to the start or end (respectively) of the paragraph (in the given direction), jumping paragraph-by-paragraph as necessary.</p>
<p>⌘← / ⌘→ move the cursor to the start or end (respectively) of the current line (the equivalent of Home and End on some other platforms).</p>
<p>All of these can be combined with ⇧ to select text as the cursor moves.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='19' data-type='radio'>
                    
                    <div class='ays_question_hint_container '>
                        <i class='ays_fa ays_fa_info_circle ays_question_hint ays-quiz-keyboard-active' tabindex='0' aria-hidden='true'></i>
                        <span class='ays_question_hint_text'><p>It sometimes doesn&#8217;t work if you use a Windows keyboard.</p>
</span>
                    </div>
                    
                    <p class='ays-question-counter animated'>26 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>On a PowerPC or Intel Mac, what do you hold down after hitting the power button in order to enter recovery mode?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-99-1' value='99'/>

                <label for='ays-answer-99-1' class='  ays_position_initial  ays-quiz-keyboard-label'>D</label><label for='ays-answer-99-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-95-1' value='95'/>

                <label for='ays-answer-95-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘R</label><label for='ays-answer-95-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-100-1' value='100'/>

                <label for='ays-answer-100-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥</label><label for='ays-answer-100-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-102-1' value='102'/>

                <label for='ays-answer-102-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘V</label><label for='ays-answer-102-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-96-1' value='96'/>

                <label for='ays-answer-96-1' class='  ays_position_initial  ays-quiz-keyboard-label'>The mouse / trackpad button</label><label for='ays-answer-96-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-97-1' value='97'/>

                <label for='ays-answer-97-1' class='  ays_position_initial  ays-quiz-keyboard-label'>R</label><label for='ays-answer-97-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-101-1' value='101'/>

                <label for='ays-answer-101-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⌘PR</label><label for='ays-answer-101-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-19]' id='ays-answer-98-1' value='98'/>

                <label for='ays-answer-98-1' class='  ays_position_initial  ays-quiz-keyboard-label'>T</label><label for='ays-answer-98-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['19'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='18' data-type='radio'>
                    
                    <div class='ays_question_hint_container '>
                        <i class='ays_fa ays_fa_info_circle ays_question_hint ays-quiz-keyboard-active' tabindex='0' aria-hidden='true'></i>
                        <span class='ays_question_hint_text'><p>It&#8217;s not the same as on PPC and Intel Macs.</p>
</span>
                    </div>
                    
                    <p class='ays-question-counter animated'>27 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>On an Apple Silicon Mac, what do you hold down after hitting the power button in order to select the startup disk?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-89-1' value='89'/>

                <label for='ays-answer-89-1' class='  ays_position_initial  ays-quiz-keyboard-label'>R</label><label for='ays-answer-89-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-93-1' value='93'/>

                <label for='ays-answer-93-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⇧</label><label for='ays-answer-93-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-94-1' value='94'/>

                <label for='ays-answer-94-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘</label><label for='ays-answer-94-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-90-1' value='90'/>

                <label for='ays-answer-90-1' class='  ays_position_initial  ays-quiz-keyboard-label'>T</label><label for='ays-answer-90-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-92-1' value='92'/>

                <label for='ays-answer-92-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥</label><label for='ays-answer-92-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-88-1' value='88'/>

                <label for='ays-answer-88-1' class='  ays_position_initial  ays-quiz-keyboard-label'>The mouse / trackpad button</label><label for='ays-answer-88-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-91-1' value='91'/>

                <label for='ays-answer-91-1' class='  ays_position_initial  ays-quiz-keyboard-label'>D</label><label for='ays-answer-91-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-18]' id='ays-answer-87-1' value='87'/>

                <label for='ays-answer-87-1' class='  ays_position_initial  ays-quiz-keyboard-label'>The power button</label><label for='ays-answer-87-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['18'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='24' data-type='checkbox'>
                    
                    
                    <p class='ays-question-counter animated'>28 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>In the Finder, what can this do (depending on what is selected &#8211; choose all that apply):</p>
<p><span style="font-size: 36px">⌘R</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='checkbox' name='ays_questions[ays-question-24]' id='ays-answer-124-1' value='124'/>

                <label for='ays-answer-124-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Shows the target of the selected alias / symlink</label><label for='ays-answer-124-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='checkbox' name='ays_questions[ays-question-24]' id='ays-answer-123-1' value='123'/>

                <label for='ays-answer-123-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Refreshes the current window</label><label for='ays-answer-123-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='checkbox' name='ays_questions[ays-question-24]' id='ays-answer-121-1' value='121'/>

                <label for='ays-answer-121-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Renames the selected item(s)</label><label for='ays-answer-121-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='checkbox' name='ays_questions[ays-question-24]' id='ays-answer-126-1' value='126'/>

                <label for='ays-answer-126-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Removes (hides) the file extension of the selected item(s)</label><label for='ays-answer-126-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='checkbox' name='ays_questions[ays-question-24]' id='ays-answer-122-1' value='122'/>

                <label for='ays-answer-122-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Moves the selected item(s) to the bin</label><label for='ays-answer-122-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='checkbox' name='ays_questions[ays-question-24]' id='ays-answer-125-1' value='125'/>

                <label for='ays-answer-125-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Rotates the selected image(s) 90°</label><label for='ays-answer-125-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['24'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Many a Mac newbie has accidentally rotated their images when they merely meant to rename them. 😕</p>
<h3>Sidenote</h3>
<p>Introduced in System 7, aliases are the Mac version of a Unix symlink or Windows shortcut.  They are still nominally supported to this day in macOS, although many applications &#8211; even otherwise well-written, native ones &#8211; do not handle them correctly.  Most Unix applications, such as almost everything you find through Terminal, will not resolve aliases to their targets, even when those same programs work correctly with symlinks and hardlinks.  Not because they explicitly support those either, but because in macOS aliases are <em>not</em> automatically resolved by the Unix file system APIs, and curious and unfortunate design choice on Apple&#8217;s part.</p>
<p>As a result, aliases were forced out of typical use by Mac OS X.  Today they are rare in the wild.</p>
<p>Which is a shame, because they were technically far superior to symlinks.  Rather than merely storing a brittle path, as symlinks do, they stored a detailed and partially-redundant set of identifiers, making them maintain their link even if the original is moved or renamed, for example.  Unfortunately, Apple broke this behaviour as of Mac OS X 10.2 Jaguar, further cementing the demise of the alias.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='20' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>29 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you bring up the Character Viewer (also known as the Character Picker, Unicode Picker, or Emoji Picker)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-20]' id='ays-answer-106-1' value='106'/>

                <label for='ays-answer-106-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃E</label><label for='ays-answer-106-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-20]' id='ays-answer-103-1' value='103'/>

                <label for='ays-answer-103-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘Space</label><label for='ays-answer-103-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-20]' id='ays-answer-105-1' value='105'/>

                <label for='ays-answer-105-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⌘P</label><label for='ays-answer-105-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-20]' id='ays-answer-104-1' value='104'/>

                <label for='ays-answer-104-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌥⇧⌘C</label><label for='ays-answer-104-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['20'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p><strong>Tip</strong>: make sure to explore its Settings (the ⋯⃝ pop-up menu button in the top-left corner) to see the full range of available character categories.  By default only a small handful are enabled.</p>
<p><a href="https://wadetregaskis.com/wp-content/uploads/2024/01/Character-Palette-Settings.webp" data-wpel-link="internal"><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-7365" src="https://wadetregaskis.com/wp-content/uploads/2024/01/Character-Palette-Settings.webp" alt="Screenshot of the Character Palette Settings window." width="452" height="438" srcset="https://wadetregaskis.com/wp-content/uploads/2024/01/Character-Palette-Settings.webp 452w, https://wadetregaskis.com/wp-content/uploads/2024/01/Character-Palette-Settings-256x248.webp 256w, https://wadetregaskis.com/wp-content/uploads/2024/01/Character-Palette-Settings@2x.webp 904w" sizes="auto, (max-width: 452px) 100vw, 452px" /></a></p>
<p><strong>Note</strong>: on some Macs, Fn-E <em>also</em> works.  It is not listed here because it is not the canonical shortcut, only works on some Macs (those that have a Fn key), and only since about macOS Big Sur.  It also has a habitat of not working reliably even on Macs which meet both those criteria.</p>
<p><strong>Meta-trivia</strong>: in an earlier version of this quiz, Fn-E was actually listed as an option, but not accepted &#8211; whoops!  The quiz has since been corrected to not list it as an option, to avoid confusion.  Of the options given (and on many Macs) ⌃⌘Space is the only correct answer.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='17' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>30 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>In a text field, what does ⌃E do?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-17]' id='ays-answer-84-1' value='84'/>

                <label for='ays-answer-84-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Ends editing (removes focus from the field)</label><label for='ays-answer-84-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-17]' id='ays-answer-82-1' value='82'/>

                <label for='ays-answer-82-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Moves the cursor to the end of the line</label><label for='ays-answer-82-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-17]' id='ays-answer-85-1' value='85'/>

                <label for='ays-answer-85-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Erases the current line</label><label for='ays-answer-85-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-17]' id='ays-answer-83-1' value='83'/>

                <label for='ays-answer-83-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Scrolls to the bottom</label><label for='ays-answer-83-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-17]' id='ays-answer-86-1' value='86'/>

                <label for='ays-answer-86-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Erases the rest of the line</label><label for='ays-answer-86-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['17'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='23' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>31 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>What does this do:</p>
<p><span style="font-size: 36px">⌥Space</span></p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-23]' id='ays-answer-118-1' value='118'/>

                <label for='ays-answer-118-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Opens Control Centre</label><label for='ays-answer-118-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-23]' id='ays-answer-116-1' value='116'/>

                <label for='ays-answer-116-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Opens Spotlight</label><label for='ays-answer-116-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-23]' id='ays-answer-120-1' value='120'/>

                <label for='ays-answer-120-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Actives Spaces / Mission Control</label><label for='ays-answer-120-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-23]' id='ays-answer-119-1' value='119'/>

                <label for='ays-answer-119-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Inserts a space character after the cursor</label><label for='ays-answer-119-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-23]' id='ays-answer-117-1' value='117'/>

                <label for='ays-answer-117-1' class='  ays_position_initial  ays-quiz-keyboard-label'>Inserts a non-breaking space character</label><label for='ays-answer-117-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['23'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            <p>Tip: <em>lots</em> of input validation code is very badly written, especially in websites (as opposed to e.g. native apps).  You can often get around &#8220;no spaces&#8221; restrictions with the non-breaking space character.</p>

                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                        
                        <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none' value='Prev' />
                        
                        <i class="ays_fa ays_fa_arrow_right ays_next action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                        <input type='button' class='ays_next action-button ays-quiz-keyboard-active ' value='Next' />
                    </div>
                        
                    </div>
                </div><div class='step ' data-question-id='32' data-type='radio'>
                    
                    
                    <p class='ays-question-counter animated'>32 / 32</p>
                    <div class='ays-abs-fs'>
                        
                        <div class='ays_quiz_question'>
                                <p>How do you paste text as &#8220;plain text&#8221; (adopting the existing style at the insertion point, rather than any styling from the original cut or copied text)?</p>

                            </div>
                            
                        <div class='ays-quiz-answers ays_grid_view_container  '>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-32]' id='ays-answer-160-1' value='160'/>

                <label for='ays-answer-160-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌘V</label><label for='ays-answer-160-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-32]' id='ays-answer-161-1' value='161'/>

                <label for='ays-answer-161-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌃⌘V</label><label for='ays-answer-161-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-32]' id='ays-answer-159-1' value='159'/>

                <label for='ays-answer-159-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⌘V</label><label for='ays-answer-159-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div>
            <div class='ays-field ays_grid_view_item ays-quiz-keyboard-active' tabindex='0' >
                <input type='hidden' name='ays_answer_correct[]' value='0'/>

                <input type='radio' name='ays_questions[ays-question-32]' id='ays-answer-158-1' value='158'/>

                <label for='ays-answer-158-1' class='  ays_position_initial  ays-quiz-keyboard-label'>⌥⇧⌘V</label><label for='ays-answer-158-1' class='ays_answer_image ays_answer_image_class ays_empty_before_content'></label>

            </div><script>
            if(typeof window.quizOptions_1 === 'undefined'){
                window.quizOptions_1 = [];
            }
            window.quizOptions_1['32'] = 'W10=';</script></div>                        
                        
                        
                        
                        
                        <div class='wrong_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='right_answer_text ays_do_not_show' style='display:none'>
                            
                        </div>
                        <div class='ays_questtion_explanation' style='display:none'>
                            
                        </div>
                        <div class='ays-quiz-additonal-box'>
                            
                        </div>   
                        <div class='ays_buttons_div'>
                            
                            <i class="ays_fa ays_fa_arrow_left ays_previous action-button ays_arrow ays-quiz-keyboard-active ays_display_none" tabindex='0'></i>
                            <input type='button' class='ays_previous action-button ays-quiz-keyboard-active ays_display_none'  value='Prev' />
                            <i class='ays_display_none ays_fa ays_fa_flag_checkered ays_finish action-button ays_arrow ays_next_arrow ays-quiz-keyboard-active' tabindex='0'></i><input type='submit' name='ays_finish_quiz' class='  ays_next ays_finish action-button ays-quiz-keyboard-active' value='Next'/>
                        </div>
                        
                    </div>
                </div><div class='step ays_thank_you_fs'>
            <div class='ays-abs-fs ays-end-page'><div data-class='lds-ellipsis' data-role='loader' class='ays-loader'><div></div><div></div><div></div><div></div></div><div class='ays_quiz_results_page'><div class='ays_score_message'></div><div class='ays_message'></div><p class='ays_restart_button_p'></p></div>
            </div>
        </div><style>
            div#ays-quiz-container-1 * {
                box-sizing: border-box;
            }

            #ays-quiz-container-1 [id^='ays_finish_quiz_'] div.step div.ays-abs-fs {
                width: 90%;
            }

            /* Styles for Internet Explorer start */
            #ays-quiz-container-1 #ays_finish_quiz_1 {
                
            }

            /* Styles for Quiz container */
            #ays-quiz-container-1{
                min-height: 450px;
                width:100%;
                background-color:#fff;
                background-position:center center;border-radius:8px;box-shadow: 0px 0px 50px  1px rgba(86,86,86,0.4);border: none;}

            /* Styles for questions */
            #ays-quiz-container-1 #ays_finish_quiz_1 div.step {
                min-height: 450px;
            }

            /* Styles for text inside quiz container */
            #ays-quiz-container-1 .ays-start-page *:not(input):not([class^='enlighter']),
            #ays-quiz-container-1 .ays_question_hint,
            #ays-quiz-container-1 label[for^="ays-answer-"],
            #ays-quiz-container-1 #ays_finish_quiz_1 p,
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-fs-title,
            #ays-quiz-container-1 .ays-fs-subtitle,
            #ays-quiz-container-1 .logged_in_message,
            #ays-quiz-container-1 .ays_score_message,
            #ays-quiz-container-1 .ays_message{
               color: #000000;
               outline: none;
            }

            div#ays-quiz-container-1 .ays_question_hint.ays-quiz-keyboard-active,
            div#ays-quiz-container-1 .ays_restart_button.ays-quiz-keyboard-active {
                outline: revert;
            }

            #ays-quiz-container-1 .ays-quiz-password-message-box,
            #ays-quiz-container-1 .ays-quiz-question-note-message-box,
            #ays-quiz-container-1 .ays_quiz_question,
            #ays-quiz-container-1 .ays-quiz-question-category-box,
            #ays-quiz-container-1 .ays_quiz_question *:not([class^='enlighter']) {
                color: #000000;
            }

            #ays-quiz-container-1 .ays-quiz-question-category-box em {
                color: #000000;
            }

            #ays-quiz-container-1 textarea,
            #ays-quiz-container-1 input::first-letter,
            #ays-quiz-container-1 select::first-letter,
            #ays-quiz-container-1 option::first-letter {
                color: initial !important;
            }
            
            #ays-quiz-container-1 p::first-letter:not(.ays_no_questions_message) {
                color: #000000 !important;
                background-color: transparent !important;
                font-size: inherit !important;
                font-weight: inherit !important;
                float: none !important;
                line-height: inherit !important;
                margin: 0 !important;
                padding: 0 !important;
            }
            
            
            #ays-quiz-container-1 .select2-container,
            #ays-quiz-container-1 .ays-field * {
                font-size: 16px !important;
            }
    
            #ays-quiz-container-1 .ays_quiz_question p {
                font-size: 16px;
                text-align: inherit;
            }

            #ays-quiz-container-1 .ays-fs-subtitle p {
                text-align:  center ;
            }

            #ays-quiz-container-1 .ays_quiz_question {
                text-align:  center ;
                margin-bottom: 10px;
            }

            #ays-quiz-container-1 .ays_quiz_question pre {
                max-width: 100%;
                white-space: break-spaces;
            }

            /* Mango theme (Version: 1.4.202301041836) | tid=32449 | Start */
            #ays-quiz-container-1 .ays_quiz_question img {
                float: unset;
                margin: 0;
            }
            /* Mango theme (Version: 1.4.202301041836) | End */

            #ays-quiz-container-1 .ays-quiz-timer p {
                font-size: 16px;
            }

            #ays-quiz-container-1 section.ays_quiz_redirection_timer_container hr,
            #ays-quiz-container-1 section.ays_quiz_timer_container hr {
                margin: 0;
            }

            #ays-quiz-container-1 section.ays_quiz_timer_container.ays_quiz_timer_red_warning .ays-quiz-timer {
                color: #ff0000;
            }

            #ays-quiz-container-1 .ays_thank_you_fs p {
                text-align: center;
            }

            #ays-quiz-container-1 .ays_quiz_results_page .ays_score span {
                visibility: visible;
            }

            #ays-quiz-container-1 input[type='button'],
            #ays-quiz-container-1 input[type='submit'] {
                color: #ffffff !important;
            }

            #ays-quiz-container-1 input[type='button']{
                outline: none;
            }

            #ays-quiz-container-1 .information_form input[type='text'],
            #ays-quiz-container-1 .information_form input[type='url'],
            #ays-quiz-container-1 .information_form input[type='number'],
            #ays-quiz-container-1 .information_form input[type='email'],
            #ays-quiz-container-1 .information_form input[type='checkbox'],
            #ays-quiz-container-1 .information_form input[type='tel'],
            #ays-quiz-container-1 .information_form textarea,
            #ays-quiz-container-1 .information_form select,
            #ays-quiz-container-1 .information_form option {
                color: initial !important;
                outline: none;
                background-image: unset;
            }

            #ays-quiz-container-1 .wrong_answer_text{
                color:#ff4d4d;
            }
            #ays-quiz-container-1 .right_answer_text{
                color:#33cc33;
            }

            #ays-quiz-container-1 .wrong_answer_text p {
                font-size:16px;
            }

            #ays-quiz-container-1 .ays_questtion_explanation p {
                font-size:16px;
            }

            #ays-quiz-container-1 .wrong_answer_text *:not(strong) {
                text-transform:none;
                text-decoration: none;
                letter-spacing: 0px;
                font-weight: normal;
            }

            #ays-quiz-container-1 .ays_questtion_explanation *:not(strong) {
                text-transform:none;
                text-decoration: none;
                letter-spacing: 0px;
                font-weight: normal;
            }

            #ays-quiz-container-1 .right_answer_text *:not(strong) {
                text-transform:none;
                text-decoration: none;
                letter-spacing: 0px;
                font-weight: normal;
            }

            #ays-quiz-container-1 .right_answer_text p {
                font-size:16px;
            }

            #ays-quiz-container-1 .ays-quiz-question-note-message-box p {
                font-size:14px;
            }

            #ays-quiz-container-1 .ays-quiz-question-note-message-box *:not(strong) {
                text-transform:none;
                text-decoration: none;
                letter-spacing: 0px;
                font-weight: normal;
            }
            
            #ays-quiz-container-1 .ays_cb_and_a,
            #ays-quiz-container-1 .ays_cb_and_a * {
                color: rgb(0,0,0);
                text-align: center;
            }

            /* Quiz textarea height */
            #ays-quiz-container-1 textarea {
                height: 100px;
                min-height: 100px;
            }

            /* Quiz rate and passed users count */
            #ays-quiz-container-1 .ays_quizn_ancnoxneri_qanak,
            #ays-quiz-container-1 .ays_quiz_rete_avg {
                color:#fff !important;
                background-color:#000000;   
            }

            #ays-quiz-container-1 .ays-questions-container > .ays_quizn_ancnoxneri_qanak {
                padding: 5px 20px;
            }
            #ays-quiz-container-1 div.for_quiz_rate.ui.star.rating .icon {
                color: rgba(0,0,0,0.35);
            }
            #ays-quiz-container-1 .ays_quiz_rete_avg div.for_quiz_rate_avg.ui.star.rating .icon {
                color: rgba(255,255,255,0.5);
            }

            #ays-quiz-container-1 .ays_quiz_rete .ays-quiz-rate-link-box .ays-quiz-rate-link {
                color: #000000;
            }

            /* Loaders */            
            #ays-quiz-container-1 div.lds-spinner,
            #ays-quiz-container-1 div.lds-spinner2 {
                color: #000000;
            }
            #ays-quiz-container-1 div.lds-spinner div:after,
            #ays-quiz-container-1 div.lds-spinner2 div:after {
                background-color: #000000;
            }
            #ays-quiz-container-1 .lds-circle,
            #ays-quiz-container-1 .lds-facebook div,
            #ays-quiz-container-1 .lds-ellipsis div{
                background: #000000;
            }
            #ays-quiz-container-1 .lds-ripple div{
                border-color: #000000;
            }
            #ays-quiz-container-1 .lds-dual-ring::after,
            #ays-quiz-container-1 .lds-hourglass::after{
                border-color: #000000 transparent #000000 transparent;
            }

            /* Stars */
            #ays-quiz-container-1 .ui.rating .icon,
            #ays-quiz-container-1 .ui.rating .icon:before {
                font-family: Rating !important;
            }

            /* Progress bars */
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-progress {
                border-color: rgba(0,0,0,0.8);
            }
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-progress-bg {
                background-color: rgba(0,0,0,0.3);
            }    
            #ays-quiz-container-1 .ays-progress-value {
                color: #000000;
                text-align: center;
            }
            #ays-quiz-container-1 .ays-progress-bar {
                background-color: #5d6cf9;
            }
            #ays-quiz-container-1 .ays-question-counter .ays-live-bar-wrap {
                direction:ltr !important;
            }
            #ays-quiz-container-1 .ays-live-bar-fill{
                color: #000000;
                border-bottom: 2px solid rgba(0,0,0,0.8);
                text-shadow: 0px 0px 5px #fff;
            }
            #ays-quiz-container-1 .ays-live-bar-fill.ays-live-fourth,
            #ays-quiz-container-1 .ays-live-bar-fill.ays-live-third,
            #ays-quiz-container-1 .ays-live-bar-fill.ays-live-second {
                text-shadow: unset;
            }
            #ays-quiz-container-1 .ays-live-bar-percent{
                display:none;
            }
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays_average {
                text-align: center;
            }
            
            /* Music, Sound */
            #ays-quiz-container-1 .ays_music_sound {
                color:rgb(0,0,0);
            }

            /* Dropdown questions scroll bar */
            #ays-quiz-container-1 blockquote {
                border-left-color: #000000 !important;                                      
            }

            /* Quiz Password */
            #ays-quiz-container-1 .ays-start-page > input[id^='ays_quiz_password_val_'],
            #ays-quiz-container-1 .ays-quiz-password-toggle-visibility-box {
                width: 100%;
            }


            /* Question hint */
            #ays-quiz-container-1 .ays_question_hint_container .ays_question_hint_text {
                background-color:#fff;
                box-shadow: 0 0 15px 3px rgba(86,86,86,0.6);
                max-width: 270px;
            }

            #ays-quiz-container-1 .ays_question_hint_container .ays_question_hint_text p {
                max-width: unset;
            }

            #ays-quiz-container-1 .ays-quiz-additonal-box {
                display: flex;
                justify-content: flex-end;
                align-items: center;
                position: relative;  
            }

            #ays-quiz-container-1 .ays_questions_hint_max_width_class {
                max-width: 80%;
            }

            /* Information form */
            #ays-quiz-container-1 .ays-form-title{
                color:rgb(0,0,0);
            }

            /* Quiz timer */
            #ays-quiz-container-1 div.ays-quiz-redirection-timer,
            #ays-quiz-container-1 div.ays-quiz-timer{
                color: #000000;
                text-align: center;
            }

            #ays-quiz-container-1 div.ays-quiz-timer.ays-quiz-message-before-timer:before {
                font-weight: 500;
            }

            /* Quiz title / transformation */
            #ays-quiz-container-1 .ays-fs-title{
                text-transform: none;
                font-size: 28px;
                text-align: center;
                    text-shadow: 2px 2px 3px  #cecece;
            }
            
            /* Quiz buttons */
            #ays-quiz-container-1 .ays_arrow {
                color:#ffffff!important;
            }
            #ays-quiz-container-1 input#ays-submit,
            #ays-quiz-container-1 #ays_finish_quiz_1 .action-button,
            div#ays-quiz-container-1 #ays_finish_quiz_1 .action-button.ays_restart_button,
            #ays-quiz-container-1 + .ays-quiz-category-selective-main-container .ays-quiz-category-selective-restart-bttn,
            #ays-quiz-container-1 .ays-quiz-category-selective-submit-bttn {
                background: none;
                background-color: #5d6cf9;
                color:#ffffff;
                font-size: 20px;
                padding: 13px 30px;
                border-radius: 8px;
                height: auto;
                letter-spacing: 0;
                box-shadow: unset;
                width: auto;
                /* border: unset; */
                min-height: unset;
                line-height: normal;
                text-shadow: unset;
            }
            #ays-quiz-container-1 input#ays-submit,
            #ays-quiz-container-1 #ays_finish_quiz_1 input.action-button,
            #ays-quiz-container-1 + .ays-quiz-category-selective-main-container .ays-quiz-category-selective-restart-bttn,
            #ays-quiz-container-1 .ays-quiz-category-selective-submit-bttn {
                
            }

            #ays-quiz-container-1 #ays_finish_quiz_1 .action-button.ays_check_answer {
                padding: 5px 10px;
                font-size: 20px !important;
            }
            #ays-quiz-container-1 #ays_finish_quiz_1 .action-button.ays_restart_button {
                white-space: nowrap;
                padding: 5px 10px;
                white-space: normal;
            }
            #ays-quiz-container-1 input#ays-submit:hover,
            #ays-quiz-container-1 input#ays-submit:focus,
            #ays-quiz-container-1 #ays_finish_quiz_1 .action-button:hover,
            #ays-quiz-container-1 #ays_finish_quiz_1 .action-button:focus,
            #ays-quiz-container-1 + .ays-quiz-category-selective-main-container .ays-quiz-category-selective-restart-bttn:hover,
            #ays-quiz-container-1 .ays-quiz-category-selective-submit-bttn:hover {
                background: none;
                box-shadow: 0 0 0 2px #ffffff;
                background-color: #5d6cf9;
            }
            #ays-quiz-container-1 .ays_restart_button {
                color: #ffffff;
            }
            
            #ays-quiz-container-1 .ays_restart_button_p,
            #ays-quiz-container-1 .ays_buttons_div {
                justify-content: center;
            }

            #ays-quiz-container-1 .ays_finish.action-button{
                margin: 10px 5px;
            }

            #ays-quiz-container-1 .ays-share-btn.ays-share-btn-branded {
                color: #fff;
                display: inline-block;
            }

            #ays-quiz-container-1 .ays_quiz_results .ays-field.checked_answer_div.correct_div input:checked+label {
                background-color: transparent;
            }
                        
            /* Question answers */
            #ays-quiz-container-1 .ays-field {
                    border-color: #dddddd;
                    border-style: solid;
                    border-width: 1px;
                    box-shadow: none;flex-direction: column-reverse;
            }
            

            /* Answer maximum length of a text field */
            #ays-quiz-container-1 .ays_quiz_question_text_message{
                color: #000000;
                text-align: left;
                font-size: 12px;
            }

            div#ays-quiz-container-1 div.ays_quiz_question_text_error_message {
                color: #ff0000;
            }

            /* Questions answer image */
            #ays-quiz-container-1 .ays-answer-image {
                width:100%;
                height:150px;
                object-fit: cover;
            }
            
            #ays-quiz-container-1 .ays-quiz-answers .ays-field:hover:not(.ays-answered-text-input){
                opacity: 1;
            }
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field label.ays_answer_caption[for^='ays-answer-'] {
                z-index: 1;
                position:initial;bottom:0;}
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field input~label[for^='ays-answer-'] {
                padding: 5px;
            }

            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field {
                margin-bottom: 12px;
            }
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field.ays_grid_view_item {
                width: calc(50% - 6px);
            }
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field.ays_grid_view_item:nth-child(odd) {
                margin-right: 6px;
            }
            
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field input:checked+label:before {
                border-color: #5d6cf9;
                background: #5d6cf9;
                background-clip: content-box;
            }
            #ays-quiz-container-1 .ays-quiz-answers div.ays-text-right-answer {
                color: #000000;
            }
                        
            /* Questions answer right/wrong icons */
            #ays-quiz-container-1 .ays-field input~label.answered.correct:after{
                content: url('https://wadetregaskis.com/wp-content/plugins/quiz-maker/public/images/correct.png');          }
            #ays-quiz-container-1 .ays-field input~label.answered.wrong:after{
                content: url('https://wadetregaskis.com/wp-content/plugins/quiz-maker/public/images/wrong.png');
            }
            #ays-quiz-container-1 .ays-field label.answered:last-of-type:after{
                display: none;
                height: auto;
                left: 10px;top: 10px;}
            /* Dropdown questions */            
            #ays-quiz-container-1 #ays_finish_quiz_1 .ays-field .select2-container--default .select2-selection--single {
                border-bottom: 2px solid #5d6cf9;
                background-color: #5d6cf9;
            }
            
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__placeholder,
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__rendered,
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__arrow {
                color: #ffffff;
            }

            #ays-quiz-container-1 .select2-container--default .select2-search--dropdown .select2-search__field:focus,
            #ays-quiz-container-1 .select2-container--default .select2-search--dropdown .select2-search__field {
                outline: unset;
                padding: 0.75rem;
            }

            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__rendered,
            #ays-quiz-container-1 .select2-container--default .select2-results__option--highlighted[aria-selected] {
                background-color: #5d6cf9;
            }

            #ays-quiz-container-1 .ays-field .select2-container--default,
            #ays-quiz-container-1 .ays-field .select2-container--default .selection,
            #ays-quiz-container-1 .ays-field .select2-container--default .dropdown-wrapper,
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__rendered,
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__rendered .select2-selection__placeholder,
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__arrow,
            #ays-quiz-container-1 .ays-field .select2-container--default .select2-selection--single .select2-selection__arrow b[role='presentation'] {
                font-size: 16px !important;
            }

            #ays-quiz-container-1 .select2-container--default .select2-results__option {
                padding: 6px;
            }
            
            /* Dropdown questions scroll bar */
            #ays-quiz-container-1 .select2-results__options::-webkit-scrollbar {
                width: 7px;
            }
            #ays-quiz-container-1 .select2-results__options::-webkit-scrollbar-track {
                background-color: rgba(255,255,255,0.35);
            }
            #ays-quiz-container-1 .select2-results__options::-webkit-scrollbar-thumb {
                transition: .3s ease-in-out;
                background-color: rgba(0,0,0,0.55);
            }
            #ays-quiz-container-1 .select2-results__options::-webkit-scrollbar-thumb:hover {
                transition: .3s ease-in-out;
                background-color: rgba(0,0,0,0.85);
            }

            /* Audio / Video */
            #ays-quiz-container-1 .mejs-container .mejs-time{
                box-sizing: unset;
            }
            #ays-quiz-container-1 .mejs-container .mejs-time-rail {
                padding-top: 15px;
            }

            #ays-quiz-container-1 .mejs-container .mejs-mediaelement video {
                margin: 0;
            }

            /* Limitation */
            #ays-quiz-container-1 .ays-quiz-limitation-count-of-takers {
                padding: 50px;
            }

            #ays-quiz-container-1 div.ays-quiz-results-toggle-block span.ays-show-res-toggle.ays-res-toggle-show,
            #ays-quiz-container-1 div.ays-quiz-results-toggle-block span.ays-show-res-toggle.ays-res-toggle-hide{
                color: #000000;
            }

            #ays-quiz-container-1 div.ays-quiz-results-toggle-block input:checked + label.ays_switch_toggle {
                border: 1px solid #000000;
            }

            #ays-quiz-container-1 div.ays-quiz-results-toggle-block input:checked + label.ays_switch_toggle {
                border: 1px solid #000000;
            }

            #ays-quiz-container-1 div.ays-quiz-results-toggle-block input:checked + label.ays_switch_toggle:after{
                background: #000000;
            }

            #ays-quiz-container-1.ays_quiz_elegant_dark div.ays-quiz-results-toggle-block input:checked + label.ays_switch_toggle:after,
            #ays-quiz-container-1.ays_quiz_rect_dark div.ays-quiz-results-toggle-block input:checked + label.ays_switch_toggle:after{
                background: #000;
            }

            /* Hestia theme (Version: 3.0.16) | Start */
            #ays-quiz-container-1 .mejs-container .mejs-inner .mejs-controls .mejs-button > button:hover,
            #ays-quiz-container-1 .mejs-container .mejs-inner .mejs-controls .mejs-button > button {
                box-shadow: unset;
                background-color: transparent;
            }
            #ays-quiz-container-1 .mejs-container .mejs-inner .mejs-controls .mejs-button > button {
                margin: 10px 6px;
            }
            /* Hestia theme (Version: 3.0.16) | End */

            /* Go theme (Version: 1.4.3) | Start */
            #ays-quiz-container-1 label[for^='ays-answer']:before,
            #ays-quiz-container-1 label[for^='ays-answer']:before {
                -webkit-mask-image: unset;
                mask-image: unset;
            }

            #ays-quiz-container-1.ays_quiz_classic_light .ays-field input:checked+label.answered.correct:before,
            #ays-quiz-container-1.ays_quiz_classic_dark .ays-field input:checked+label.answered.correct:before {
                background-color: #5d6cf9 !important;
                background-color: rgba(39,174,96, 1) !important;
            }
            /* Go theme (Version: 1.4.3) | End */

            #ays-quiz-container-1 .ays_quiz_results fieldset.ays_fieldset .ays_quiz_question .wp-video {
                width: 100% !important;
                max-width: 100%;
            }

            /* Classic Dark / Classic Light */
            /* Dropdown questions right/wrong styles */
            #ays-quiz-container-1.ays_quiz_classic_dark .correct_div,
            #ays-quiz-container-1.ays_quiz_classic_light .correct_div{
                border-color:green !important;
                opacity: 1 !important;
                background-color: rgba(39,174,96,0.4) !important;
            }
            #ays-quiz-container-1.ays_quiz_classic_dark .correct_div .selected-field,
            #ays-quiz-container-1.ays_quiz_classic_light .correct_div .selected-field {
                padding: 0px 10px 0px 10px;
                color: green !important;
            }

            #ays-quiz-container-1.ays_quiz_classic_dark .wrong_div,
            #ays-quiz-container-1.ays_quiz_classic_light .wrong_div{
                border-color:red !important;
                opacity: 1 !important;
                background-color: rgba(243,134,129,0.4) !important;
            }
            #ays-quiz-container-1.ays_quiz_classic_dark .ays-field.checked_answer_div.wrong_div input:checked~label,
            #ays-quiz-container-1.ays_quiz_classic_light .ays-field.checked_answer_div.wrong_div input:checked~label {
                background-color: rgba(243,134,129,0.4) !important;
            }
            #ays-quiz-container-1.ays_quiz_classic_dark .ays-field,
            #ays-quiz-container-1.ays_quiz_classic_light .ays-field {
                text-align: left;
                /*margin-bottom: 10px;*/
                padding: 0;
                transition: .3s ease-in-out;
            }

            #ays-quiz-container-1 .ays-quiz-close-full-screen {
                fill: #000000;
            }

            #ays-quiz-container-1 .ays-quiz-open-full-screen {
                fill: #000000;
            }

            #ays-quiz-container-1 .ays_quiz_login_form p{
                color: #000000;
            }

            /* report questions modal start */
            .ays-modal-reports {
                display: none;
                position: fixed;
                z-index: 9999;
                left: 0;
                top: 0;
                width: 100%;
                height: 100%;
                overflow: auto;
                background-color: rgba(0, 0, 0, 0.4);
                animation-duration: .5s;
                background-color: rgba(0, 0, 0, 0.4);
            }

            #ays-quiz-question-report-modal-1 .ays-modal-content-reports {
                background-color: #fefefe;
                margin: 10% auto;
                border: 1px solid #888;
                max-width: 500px;
                width: 100%;
                border-radius: 10px;
                padding: 20px;
                box-sizing: border-box;
                position: relative;
            }

            #ays-quiz-question-report-modal-1 .ays-modal-content-reports label{
                display: block;
                margin-bottom: 10px;
                font-weight: bold;
                letter-spacing: normal;
            }

            #ays-quiz-question-report-modal-1 .ays-modal-content-reports textarea {
                display: block;
                width: 100%;
                height: 100px;
                padding: 5px;
                box-sizing: border-box;
                border-radius: 5px;
                border: 1px solid #ccc;
                max-width: 100%;
                max-height: 500px;
                resize: vertical;
                transition: unset;
            }

            #ays-quiz-question-report-modal-1 .ays-modal-content-reports input.ays-quiz-submit-question-report {
                background-color: #0073aa;
                color: #fff !important;
                border: none;
                border-radius: 5px;
                padding: 10px 20px;
                cursor: pointer;
                margin-top: 20px;
                line-height: normal;
                letter-spacing: normal;
                box-shadow: unset;
                background-image: unset;
            }

            #ays-quiz-question-report-modal-1 .ays-close-reports-window {
                color: #aaa;
                font-weight: bold;
                position: absolute;
                top: 1%;
                right: 1%;
            }

            #ays-quiz-question-report-modal-1 .ays-close-reports-window img {
                box-shadow: unset;
            }
            
            #ays-quiz-question-report-modal-1 .ays-quiz-preloader img {
                box-shadow: unset;
            }

            #ays-quiz-question-report-modal-1 .ays-close-reports-window img:hover,
            #ays-quiz-question-report-modal-1 .ays-close-reports-window img:focus {
                cursor: pointer;
            }

            #ays-quiz-question-report-modal-1 .ays-quiz-question-report-error {
                display: none;
                font-size: 13px;
                color: #f00;
                text-align: left;
            }

            #ays-quiz-question-report-modal-1 .ays-quiz-question-report-textarea-label,
            #ays-quiz-question-report-modal-1 .ays-quiz-question-report-title {
                text-align: left;
            }

            #ays-quiz-question-report-modal-1 .ays_quiz_modal_overlay {
                width: 100%;
                height: 100%;
                position: fixed;
                top: 0;
                left: 0;
                position: absolute;
                z-index: 1000000000;
                flex-direction: column;
            }

            #ays-quiz-question-report-modal-1 .ays-quiz-container .ays-quiz-user-cհoosing-anonymous-assessment {
                margin: 10px 0;
            }

            /* report questions modal end */

            @media screen and (max-width: 768px){
                #ays-quiz-container-1{
                    max-width: 100%;
                }

                div#ays-quiz-container-1 [id^='ays_finish_quiz_'] div.step div.ays-abs-fs {
                    width: 90%;
                }

                #ays-quiz-container-1 .ays_quiz_question p {
                    font-size: 16px;
                }

                #ays-quiz-container-1 .select2-container,
                #ays-quiz-container-1 .ays-field * {
                    font-size: 15px !important;
                }

                div#ays-quiz-container-1 input#ays-submit,
                div#ays-quiz-container-1 #ays_finish_quiz_1 .action-button,
                div#ays-quiz-container-1 #ays_finish_quiz_1 .action-button.ays_restart_button,
                #ays-quiz-container-1 + .ays-quiz-category-selective-main-container .ays-quiz-category-selective-restart-bttn,
                #ays-quiz-container-1 .ays-quiz-category-selective-submit-bttn {
                    font-size: 20px;
                }

                /* Quiz title / mobile font size */
                div#ays-quiz-container-1 .ays-fs-title {
                    font-size: 20px;
                }

                /* Question explanation / mobile font size */
                #ays-quiz-container-1 .ays_questtion_explanation p {
                    font-size:16px;
                }

                /* Wrong answers / mobile font size */
                #ays-quiz-container-1 .wrong_answer_text p {
                    font-size:16px;
                }

                /* Right answers / mobile font size */
                #ays-quiz-container-1 .right_answer_text p {
                    font-size:16px;
                }

                /* Note text / mobile font size */
                #ays-quiz-container-1 .ays-quiz-question-note-message-box p {
                    font-size:14px;
                }

                div#ays-quiz-container-1 .ays-quiz-question-note-message-box *:not(strong) {
                    text-transform:none;
                    text-decoration: none;
                    letter-spacing: 0px;
                    font-weight: normal;
                }

                div#ays-quiz-container-1 .ays_questtion_explanation *:not(strong) {
                    text-transform:none;
                    text-decoration: none;
                    letter-spacing: 0px;
                    font-weight: normal;
                }

                div#ays-quiz-container-1 .right_answer_text *:not(strong) {
                    text-transform:none;
                    text-decoration: none;
                    letter-spacing: 0px;
                    font-weight: normal;
                }

                div#ays-quiz-container-1 .wrong_answer_text *:not(strong) {
                    text-transform:none;
                    text-decoration: none;
                    letter-spacing: 0px;
                    font-weight: normal;
                }
            }
            /* Custom css styles */
            
            
            /* RTL direction styles */
            
        </style>
            <style>
                #ays-quiz-container-1 p {
                    margin: 0.625em;
                }
                
                #ays-quiz-container-1 .ays-field.checked_answer_div input:checked~label {
                    background-color: rgba(93,108,249,0.6);
                }

                #ays-quiz-container-1.ays_quiz_classic_light  .ays_quiz_results .ays-field.checked_answer_div input:checked~label,
                #ays-quiz-container-1.ays_quiz_classic_dark  .ays_quiz_results .ays-field.checked_answer_div input:checked~label,
                #ays-quiz-container-1.ays_quiz_classic_light  .enable_correction .ays-field.checked_answer_div input:checked~label,
                #ays-quiz-container-1.ays_quiz_classic_dark  .enable_correction .ays-field.checked_answer_div input:checked~label {
                    background-color: transparent;
                }

                #ays-quiz-container-1.ays_quiz_classic_light  .ays_quiz_results .not_influence_to_score .ays-field.checked_answer_div input:checked~label,
                #ays-quiz-container-1.ays_quiz_classic_dark  .ays_quiz_results .not_influence_to_score .ays-field.checked_answer_div input:checked~label,
                #ays-quiz-container-1.ays_quiz_classic_light  .enable_correction .not_influence_to_score .ays-field.checked_answer_div input:checked~label,
                #ays-quiz-container-1.ays_quiz_classic_dark  .enable_correction .not_influence_to_score .ays-field.checked_answer_div input:checked~label {
                    background-color: rgba(93,108,249,0.6);
                }
                
                #ays-quiz-container-1 .ays-field.checked_answer_div input:checked~label:hover {
                    background-color: rgba(93,108,249,0.8);
                }

                #ays-quiz-container-1.ays-quiz-container.ays_quiz_classic_light .ays-questions-container .ays-field:hover label[for^='ays-answer-'],
                #ays-quiz-container-1 .ays-field:hover:not(.ays-answered-text-input){
                    background: rgba(93,108,249,0.8);
                    /* border-radius: 4px; */
                    color: #fff;
                    transition: all .3s;
                }
                #ays-quiz-container-1 #ays_finish_quiz_1 .action-button:hover,
                #ays-quiz-container-1 #ays_finish_quiz_1 .action-button:focus,
                #ays-quiz-container-1 + .ays-quiz-category-selective-main-container .ays-quiz-category-selective-restart-bttn:hover,
                #ays-quiz-container-1 .ays-quiz-category-selective-submit-bttn:focus {
                    box-shadow: 0 0 0 2px white, 0 0 0 3px #5d6cf9;
                    background: #5d6cf9;
                }
            </style><script>
                if(typeof aysQuizOptions === 'undefined'){
                    var aysQuizOptions = [];
                }
                aysQuizOptions['1']  = 'eyJxdWl6X3ZlcnNpb24iOiI2LjUuMS4yIiwiY29yZV92ZXJzaW9uIjoiNi40LjIiLCJwaHBfdmVyc2lvbiI6IjguMi4xNCIsImNvbG9yIjoiIzVkNmNmOSIsImJnX2NvbG9yIjoiI2ZmZiIsInRleHRfY29sb3IiOiIjMDAwMDAwIiwiaGVpZ2h0Ijo0NTAsIndpZHRoIjowLCJlbmFibGVfbG9nZ2VkX3VzZXJzIjoib2ZmIiwiaW5mb3JtYXRpb25fZm9ybSI6ImRpc2FibGUiLCJmb3JtX25hbWUiOiJvbiIsImZvcm1fZW1haWwiOiJvbiIsImZvcm1fcGhvbmUiOiJvbiIsImltYWdlX3dpZHRoIjoiIiwiaW1hZ2VfaGVpZ2h0IjoiIiwiZW5hYmxlX2NvcnJlY3Rpb24iOiJvbiIsImVuYWJsZV9wcm9ncmVzc19iYXIiOiJvZmYiLCJlbmFibGVfcXVlc3Rpb25zX3Jlc3VsdCI6Im9uIiwicmFuZG9taXplX3F1ZXN0aW9ucyI6Im9mZiIsInJhbmRvbWl6ZV9hbnN3ZXJzIjoib24iLCJlbmFibGVfcXVlc3Rpb25zX2NvdW50ZXIiOiJvbiIsImVuYWJsZV9yZXN0cmljdGlvbl9wYXNzIjoib2ZmIiwicmVzdHJpY3Rpb25fcGFzc19tZXNzYWdlIjoiIiwidXNlcl9yb2xlIjpbXSwiY3VzdG9tX2NzcyI6IiIsImxpbWl0X3VzZXJzIjoib2ZmIiwibGltaXRhdGlvbl9tZXNzYWdlIjoiIiwicmVkaXJlY3RfdXJsIjoiIiwicmVkaXJlY3Rpb25fZGVsYXkiOjAsImFuc3dlcnNfdmlldyI6ImdyaWQiLCJlbmFibGVfcnRsX2RpcmVjdGlvbiI6Im9mZiIsImVuYWJsZV9sb2dnZWRfdXNlcnNfbWVzc2FnZSI6IiIsInF1ZXN0aW9uc19jb3VudCI6IiIsImVuYWJsZV9xdWVzdGlvbl9iYW5rIjoib2ZmIiwiZW5hYmxlX2xpdmVfcHJvZ3Jlc3NfYmFyIjoib2ZmIiwiZW5hYmxlX3BlcmNlbnRfdmlldyI6Im9mZiIsImVuYWJsZV9hdmVyYWdlX3N0YXRpc3RpY2FsIjoib2ZmIiwiZW5hYmxlX25leHRfYnV0dG9uIjoib24iLCJlbmFibGVfcHJldmlvdXNfYnV0dG9uIjoib2ZmIiwiZW5hYmxlX2Fycm93cyI6Im9mZiIsInRpbWVyX3RleHQiOiIiLCJxdWl6X3RoZW1lIjoiY2xhc3NpY19saWdodCIsImVuYWJsZV9zb2NpYWxfYnV0dG9ucyI6Im9mZiIsInJlc3VsdF90ZXh0IjoiWW91IHNjb3JlZCAlJXNjb3JlJSUuIFx1MDBhMFRoYXQgdG9vayB5b3UgJSV1c2VyX3Bhc3NfdGltZSUlLlxyXG5cclxuVGhlIGF2ZXJhZ2Ugc2NvcmUgaXMgJSVhdmdfc2NvcmUlJS4iLCJlbmFibGVfcGFzc19jb3VudCI6Im9mZiIsImhpZGVfc2NvcmUiOiJvbiIsInJhdGVfZm9ybV90aXRsZSI6IlBsZWFzZSByYXRlIHRoaXMgcXVpeiIsImJveF9zaGFkb3dfY29sb3IiOiIjNTY1NjU2IiwicXVpel9ib3JkZXJfcmFkaXVzIjoiOCIsInF1aXpfYmdfaW1hZ2UiOiIiLCJxdWl6X2JvcmRlcl93aWR0aCI6IjEiLCJxdWl6X2JvcmRlcl9zdHlsZSI6InNvbGlkIiwicXVpel9ib3JkZXJfY29sb3IiOiIjMDAwIiwicXVpel9sb2FkZXIiOiJkZWZhdWx0IiwiY3JlYXRlX2RhdGUiOm51bGwsImF1dGhvciI6IntcImlkXCI6XCIxXCIsXCJuYW1lXCI6XCJXYWRlIFRyZWdhc2tpc1wifSIsInF1ZXN0X2FuaW1hdGlvbiI6ImZhZGUiLCJmb3JtX3RpdGxlIjoiIiwiZW5hYmxlX2JnX211c2ljIjoib2ZmIiwicXVpel9iZ19tdXNpYyI6IiIsImFuc3dlcnNfZm9udF9zaXplIjoxNiwic2hvd19jcmVhdGVfZGF0ZSI6Im9mZiIsInNob3dfYXV0aG9yIjoib2ZmIiwiZW5hYmxlX2Vhcmx5X2ZpbmlzaCI6Im9mZiIsImFuc3dlcnNfcndfdGV4dHMiOiJvbl9ib3RoIiwiZGlzYWJsZV9zdG9yZV9kYXRhIjoib2ZmIiwiZW5hYmxlX2JhY2tncm91bmRfZ3JhZGllbnQiOiJvZmYiLCJiYWNrZ3JvdW5kX2dyYWRpZW50X2NvbG9yXzEiOiIjMDAwIiwiYmFja2dyb3VuZF9ncmFkaWVudF9jb2xvcl8yIjoiI2ZmZiIsInF1aXpfZ3JhZGllbnRfZGlyZWN0aW9uIjoidmVydGljYWwiLCJyZWRpcmVjdF9hZnRlcl9zdWJtaXQiOiJvZmYiLCJzdWJtaXRfcmVkaXJlY3RfdXJsIjoiIiwic3VibWl0X3JlZGlyZWN0X2RlbGF5IjoiMCIsInByb2dyZXNzX2Jhcl9zdHlsZSI6InNlY29uZCIsImVuYWJsZV9leGl0X2J1dHRvbiI6Im9mZiIsImV4aXRfcmVkaXJlY3RfdXJsIjoiIiwiaW1hZ2Vfc2l6aW5nIjoiY292ZXIiLCJxdWl6X2JnX2ltYWdlX3Bvc2l0aW9uIjoiY2VudGVyIGNlbnRlciIsImN1c3RvbV9jbGFzcyI6IiIsImVuYWJsZV9zb2NpYWxfbGlua3MiOiJvZmYiLCJzb2NpYWxfbGlua3MiOnsibGlua2VkaW5fbGluayI6IiIsImZhY2Vib29rX2xpbmsiOiIiLCJ0d2l0dGVyX2xpbmsiOiIiLCJ2a29udGFrdGVfbGluayI6IiIsImluc3RhZ3JhbV9saW5rIjoiIiwieW91dHViZV9saW5rIjoiIiwiYmVoYW5jZV9saW5rIjoiIn0sInNob3dfcXVpel90aXRsZSI6Im9uIiwic2hvd19xdWl6X2Rlc2MiOiJvbiIsInNob3dfbG9naW5fZm9ybSI6Im9mZiIsIm1vYmlsZV9tYXhfd2lkdGgiOiIiLCJsaW1pdF91c2Vyc19ieSI6ImlwIiwiYWN0aXZlX2RhdGVfY2hlY2siOiJvZmYiLCJhY3RpdmVJbnRlcnZhbCI6IjIwMjQtMDEtMDQgMTk6MzI6MTQiLCJkZWFjdGl2ZUludGVydmFsIjoiMjAyNC0wMS0wNCAxOTozMjoxNCIsImFjdGl2ZV9kYXRlX3ByZV9zdGFydF9tZXNzYWdlIjoiVGhlIHF1aXogd2lsbCBiZSBhdmFpbGFibGUgc29vbiEiLCJhY3RpdmVfZGF0ZV9tZXNzYWdlIjoiVGhpcyBxdWl6IGhhcyBleHBpcmVkISIsImV4cGxhbmF0aW9uX3RpbWUiOiIwIiwiZW5hYmxlX2NsZWFyX2Fuc3dlciI6Im9mZiIsInNob3dfY2F0ZWdvcnkiOiJvZmYiLCJzaG93X3F1ZXN0aW9uX2NhdGVnb3J5Ijoib2ZmIiwiZGlzcGxheV9zY29yZSI6ImJ5X3BlcmNhbnRhZ2UiLCJlbmFibGVfcndfYXNud2Vyc19zb3VuZHMiOiJvbiIsImFuc19yaWdodF93cm9uZ19pY29uIjoiZGVmYXVsdCIsInF1aXpfYmdfaW1nX2luX2ZpbmlzaF9wYWdlIjoib2ZmIiwiZmluaXNoX2FmdGVyX3dyb25nX2Fuc3dlciI6Im9mZiIsImFmdGVyX3RpbWVyX3RleHQiOiIiLCJlbmFibGVfZW50ZXJfa2V5Ijoib24iLCJidXR0b25zX3RleHRfY29sb3IiOiIjZmZmZmZmIiwiYnV0dG9uc19wb3NpdGlvbiI6ImNlbnRlciIsInNob3dfcXVlc3Rpb25zX2V4cGxhbmF0aW9uIjoib25fYm90aCIsImVuYWJsZV9hdWRpb19hdXRvcGxheSI6Im9mZiIsImJ1dHRvbnNfc2l6ZSI6ImxhcmdlIiwiYnV0dG9uc19mb250X3NpemUiOiIyMCIsImJ1dHRvbnNfd2lkdGgiOiIiLCJidXR0b25zX2xlZnRfcmlnaHRfcGFkZGluZyI6IjMwIiwiYnV0dG9uc190b3BfYm90dG9tX3BhZGRpbmciOiIxMyIsImJ1dHRvbnNfYm9yZGVyX3JhZGl1cyI6IjgiLCJlbmFibGVfbGVhdmVfcGFnZSI6Im9uIiwiZW5hYmxlX3RhY2tlcnNfY291bnQiOiJvZmYiLCJ0YWNrZXJzX2NvdW50IjoiIiwicGFzc19zY29yZSI6ODAsInBhc3Nfc2NvcmVfbWVzc2FnZSI6IjxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPk1hYyBwb3dlciB1c2VyITxcL2gyPiIsImZhaWxfc2NvcmVfbWVzc2FnZSI6IjxoMiBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlclwiPllvdSBoYXZlIG11Y2ggdG8gbGVhcm4sIE1hYyBwYWRhd2FuLjxcL2gyPiIsInF1ZXN0aW9uX2ZvbnRfc2l6ZSI6MTYsInF1aXpfd2lkdGhfYnlfcGVyY2VudGFnZV9weCI6InBpeGVscyIsInF1ZXN0aW9uc19oaW50X2ljb25fb3JfdGV4dCI6ImRlZmF1bHQiLCJxdWVzdGlvbnNfaGludF92YWx1ZSI6IiIsImVuYWJsZV9lYXJseV9maW5zaF9jb21maXJtX2JveCI6Im9uIiwiZW5hYmxlX3F1ZXN0aW9uc19vcmRlcmluZ19ieV9jYXQiOiJvZmYiLCJzaG93X3NjaGVkdWxlX3RpbWVyIjoib2ZmIiwic2hvd190aW1lcl90eXBlIjoiY291bnRkb3duIiwicXVpel9sb2FkZXJfdGV4dF92YWx1ZSI6IiIsImhpZGVfY29ycmVjdF9hbnN3ZXJzIjoib2ZmIiwic2hvd19pbmZvcm1hdGlvbl9mb3JtIjoib2ZmIiwicXVpel9sb2FkZXJfY3VzdG9tX2dpZiI6IiIsImRpc2FibGVfaG92ZXJfZWZmZWN0Ijoib2ZmIiwicXVpel9sb2FkZXJfY3VzdG9tX2dpZl93aWR0aCI6MTAwLCJwcm9ncmVzc19saXZlX2Jhcl9zdHlsZSI6InRoaXJkIiwicXVpel90aXRsZV90cmFuc2Zvcm1hdGlvbiI6Im5vbmUiLCJzaG93X2Fuc3dlcnNfbnVtYmVyaW5nIjoibm9uZSIsInF1aXpfaW1hZ2Vfd2lkdGhfYnlfcGVyY2VudGFnZV9weCI6InBpeGVscyIsInF1aXpfaW1hZ2VfaGVpZ2h0IjoiIiwicXVpel9iZ19pbWdfb25fc3RhcnRfcGFnZSI6Im9mZiIsInF1aXpfYm94X3NoYWRvd194X29mZnNldCI6MCwicXVpel9ib3hfc2hhZG93X3lfb2Zmc2V0IjowLCJxdWl6X2JveF9zaGFkb3dfel9vZmZzZXQiOjUwLCJxdWl6X3F1ZXN0aW9uX3RleHRfYWxpZ25tZW50IjoiY2VudGVyIiwicXVpel9hcnJvd190eXBlIjoiZGVmYXVsdCIsInF1aXpfc2hvd193cm9uZ19hbnN3ZXJzX2ZpcnN0Ijoib24iLCJxdWl6X2Rpc3BsYXlfYWxsX3F1ZXN0aW9ucyI6Im9mZiIsInF1aXpfdGltZXJfcmVkX3dhcm5pbmciOiJvZmYiLCJxdWl6X3NjaGVkdWxlX3RpbWV6b25lIjoiQW1lcmljYVwvTG9zX0FuZ2VsZXMiLCJxdWVzdGlvbnNfaGludF9idXR0b25fdmFsdWUiOiIiLCJxdWl6X3RhY2tlcnNfbWVzc2FnZSI6IlRoaXMgcXVpeiBpcyBleHBpcmVkISIsInF1aXpfZW5hYmxlX2xpbmtlZGluX3NoYXJlX2J1dHRvbiI6Im9uIiwicXVpel9lbmFibGVfZmFjZWJvb2tfc2hhcmVfYnV0dG9uIjoib24iLCJxdWl6X2VuYWJsZV90d2l0dGVyX3NoYXJlX2J1dHRvbiI6Im9uIiwicXVpel9tYWtlX3Jlc3BvbnNlc19hbm9ueW1vdXMiOiJvZmYiLCJxdWl6X21ha2VfYWxsX3Jldmlld19saW5rIjoib2ZmIiwic2hvd19xdWVzdGlvbnNfbnVtYmVyaW5nIjoibm9uZSIsInF1aXpfbWVzc2FnZV9iZWZvcmVfdGltZXIiOiIiLCJlbmFibGVfcGFzc3dvcmQiOiJvZmYiLCJwYXNzd29yZF9xdWl6IjoiIiwicXVpel9wYXNzd29yZF9tZXNzYWdlIjoiIiwiZW5hYmxlX3NlZV9yZXN1bHRfY29uZmlybV9ib3giOiJvZmYiLCJkaXNwbGF5X2ZpZWxkc19sYWJlbHMiOiJvZmYiLCJlbmFibGVfZnVsbF9zY3JlZW5fbW9kZSI6Im9uIiwicXVpel9lbmFibGVfcGFzc3dvcmRfdmlzaWJpbGl0eSI6Im9mZiIsInF1ZXN0aW9uX21vYmlsZV9mb250X3NpemUiOjE2LCJhbnN3ZXJzX21vYmlsZV9mb250X3NpemUiOjE1LCJzb2NpYWxfYnV0dG9uc19oZWFkaW5nIjoiIiwicXVpel9lbmFibGVfdmtvbnRha3RlX3NoYXJlX2J1dHRvbiI6Im9uIiwiYW5zd2Vyc19ib3JkZXIiOiJvbiIsImFuc3dlcnNfYm9yZGVyX3dpZHRoIjoxLCJhbnN3ZXJzX2JvcmRlcl9zdHlsZSI6InNvbGlkIiwiYW5zd2Vyc19ib3JkZXJfY29sb3IiOiIjZGRkZGRkIiwic29jaWFsX2xpbmtzX2hlYWRpbmciOiIiLCJxdWl6X2VuYWJsZV9xdWVzdGlvbl9jYXRlZ29yeV9kZXNjcmlwdGlvbiI6Im9mZiIsImFuc3dlcnNfbWFyZ2luIjoxMiwicXVpel9tZXNzYWdlX2JlZm9yZV9yZWRpcmVjdF90aW1lciI6IiIsImJ1dHRvbnNfbW9iaWxlX2ZvbnRfc2l6ZSI6MjAsImFuc3dlcnNfYm94X3NoYWRvdyI6Im9mZiIsImFuc3dlcnNfYm94X3NoYWRvd19jb2xvciI6IiMwMDAiLCJxdWl6X2Fuc3dlcl9ib3hfc2hhZG93X3hfb2Zmc2V0IjowLCJxdWl6X2Fuc3dlcl9ib3hfc2hhZG93X3lfb2Zmc2V0IjowLCJxdWl6X2Fuc3dlcl9ib3hfc2hhZG93X3pfb2Zmc2V0IjoxMCwicXVpel9jcmVhdGVfYXV0aG9yIjoxLCJxdWl6X2VuYWJsZV90aXRsZV90ZXh0X3NoYWRvdyI6Im9uIiwicXVpel90aXRsZV90ZXh0X3NoYWRvd19jb2xvciI6IiNjZWNlY2UiLCJxdWl6X3RpdGxlX3RleHRfc2hhZG93X3hfb2Zmc2V0IjoyLCJxdWl6X3RpdGxlX3RleHRfc2hhZG93X3lfb2Zmc2V0IjoyLCJxdWl6X3RpdGxlX3RleHRfc2hhZG93X3pfb2Zmc2V0IjozLCJxdWl6X3Nob3dfb25seV93cm9uZ19hbnN3ZXJzIjoib2ZmIiwicXVpel90aXRsZV9mb250X3NpemUiOjI4LCJxdWl6X3RpdGxlX21vYmlsZV9mb250X3NpemUiOjIwLCJxdWl6X3Bhc3N3b3JkX3dpZHRoIjoiIiwicXVpel9yZXZpZXdfcGxhY2Vob2xkZXJfdGV4dCI6IiIsInF1aXpfbWFrZV9yZXZpZXdfcmVxdWlyZWQiOiJvZmYiLCJxdWl6X2VuYWJsZV9yZXN1bHRzX3RvZ2dsZSI6Im9mZiIsInF1aXpfcmV2aWV3X3RoYW5rX3lvdV9tZXNzYWdlIjoiIiwicXVpel9yZXZpZXdfZW5hYmxlX2NvbW1lbnRfZmllbGQiOiJvbiIsInF1ZXN0X2V4cGxhbmF0aW9uX2ZvbnRfc2l6ZSI6MTYsInF1ZXN0X2V4cGxhbmF0aW9uX21vYmlsZV9mb250X3NpemUiOjE2LCJxdWl6X3dhaXRpbmdfdGltZSI6Im9mZiIsIndyb25nX2Fuc3dlcnNfZm9udF9zaXplIjoxNiwid3JvbmdfYW5zd2Vyc19tb2JpbGVfZm9udF9zaXplIjoxNiwicXVpel9lbmFibGVfcXVlc3Rpb25faW1hZ2Vfem9vbSI6Im9mZiIsInJpZ2h0X2Fuc3dlcnNfZm9udF9zaXplIjoxNiwicmlnaHRfYW5zd2Vyc19tb2JpbGVfZm9udF9zaXplIjoxNiwicXVpel9kaXNwbGF5X21lc3NhZ2VzX2JlZm9yZV9idXR0b25zIjoib24iLCJxdWl6X2VuYWJsZV91c2VyX2NcdTA1NzBvb3NpbmdfYW5vbnltb3VzX2Fzc2Vzc21lbnQiOiJvZmYiLCJub3RlX3RleHRfZm9udF9zaXplIjoxNCwibm90ZV90ZXh0X21vYmlsZV9mb250X3NpemUiOjE0LCJxdWl6X3F1ZXN0aW9uc19udW1iZXJpbmdfYnlfY2F0ZWdvcnkiOiJvZmYiLCJxdWl6X2VuYWJsZV9jdXN0b21fdGV4dHNfZm9yX2J1dHRvbnMiOiJvbiIsInF1aXpfY3VzdG9tX3RleHRzX3N0YXJ0X2J1dHRvbiI6IlN0YXJ0IiwicXVpel9jdXN0b21fdGV4dHNfbmV4dF9idXR0b24iOiJOZXh0IiwicXVpel9jdXN0b21fdGV4dHNfcHJldl9idXR0b24iOiJQcmV2IiwicXVpel9jdXN0b21fdGV4dHNfY2xlYXJfYnV0dG9uIjoiQ2xlYXIiLCJxdWl6X2N1c3RvbV90ZXh0c19maW5pc2hfYnV0dG9uIjoiRmluaXNoIiwicXVpel9jdXN0b21fdGV4dHNfc2VlX3Jlc3VsdHNfYnV0dG9uIjoiTmV4dCIsInF1aXpfY3VzdG9tX3RleHRzX3Jlc3RhcnRfcXVpel9idXR0b24iOiJSZXN0YXJ0IiwicXVpel9jdXN0b21fdGV4dHNfc2VuZF9mZWVkYmFja19idXR0b24iOiJTZW5kIGZlZWRiYWNrIiwicXVpel9jdXN0b21fdGV4dHNfbG9hZF9tb3JlX2J1dHRvbiI6IkxvYWQgbW9yZSIsInF1aXpfY3VzdG9tX3RleHRzX2V4aXRfYnV0dG9uIjoiRXhpdCIsInF1aXpfY3VzdG9tX3RleHRzX2NoZWNrX2J1dHRvbiI6IkNoZWNrIiwicXVpel9jdXN0b21fdGV4dHNfbG9naW5fYnV0dG9uIjoiTG9nIEluIiwicXVpel9lbmFibGVfcXVpel9jYXRlZ29yeV9kZXNjcmlwdGlvbiI6Im9mZiIsInJlcXVpcmVkX2ZpZWxkcyI6bnVsbCwiZW5hYmxlX3RpbWVyIjoib2ZmIiwiZW5hYmxlX3F1aXpfcmF0ZSI6Im9mZiIsImVuYWJsZV9yYXRlX2F2ZyI6Im9mZiIsImVuYWJsZV9ib3hfc2hhZG93Ijoib24iLCJlbmFibGVfYm9yZGVyIjoib2ZmIiwicXVpel90aW1lcl9pbl90aXRsZSI6Im9mZiIsImVuYWJsZV9yYXRlX2NvbW1lbnRzIjoib24iLCJlbmFibGVfcmVzdGFydF9idXR0b24iOiJvZmYiLCJhdXRvZmlsbF91c2VyX2RhdGEiOiJvZmYiLCJ0aW1lciI6MTAwLCJxdWl6X2JnX2ltZ19kdXJpbmdfdGhlX3F1aXoiOiJvZmYiLCJzaG93X2Fuc3dlcnNfY2FwdGlvbiI6Im9uIiwicXVpel9lbmFibGVfa2V5Ym9hcmRfbmF2aWdhdGlvbiI6Im9uIiwic2hvd19xdWl6X2ltYWdlIjoib24iLCJxdWl6X2VuYWJsZV93aGF0c2FwcF9zaGFyZV9idXR0b24iOiJvZmYiLCJzdWJtaXRfcmVkaXJlY3RfYWZ0ZXIiOiIiLCJyd19hbnN3ZXJzX3NvdW5kcyI6dHJ1ZSwiaWQiOiIxIiwidGl0bGUiOiJtYWNPUyBrZXlib2FyZCBzaG9ydGN1dHMgcXVpeiIsImRlc2NyaXB0aW9uIjoiPHNwYW4gc3R5bGU9XCJmb250LXNpemU6IDcycHhcIj5cdTIzMDNcdTIzMjVcdTIxZTdcdTIzMThcdWQ4M2VcdWRkMTQ8XC9zcGFuPiIsInF1aXpfaW1hZ2UiOiIiLCJxdWl6X2NhdGVnb3J5X2lkIjoiMSIsInF1ZXN0aW9uX2lkcyI6IjQsNywxMCw5LDExLDMsNiwxMywzMSwyNiwyOCwxNSw4LDEyLDUsMTYsMjcsMjUsMjEsMzAsMiwxLDE0LDIyLDI5LDE5LDE4LDI0LDIwLDE3LDIzLDMyIiwib3JkZXJpbmciOiIxIiwicHVibGlzaGVkIjoiMSIsImludGVydmFscyI6bnVsbCwicXVpel91cmwiOm51bGwsImN1c3RvbV9wb3N0X2lkIjpudWxsLCJhdXRob3JfaWQiOiIwIiwicXVpel9hbmltYXRpb25fdG9wIjoxMDAsInF1aXpfZW5hYmxlX2FuaW1hdGlvbl90b3AiOiJvbiJ9';
        </script>
                    <input type='hidden' name='quiz_id' value='1'/>
                    <input type='hidden' name='start_date' class='ays-start-date'/>
                </form></div>
                            </div>
                            


<p class="has-text-align-center">If you encounter any answers you believe are incorrect, please comment below.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/how-well-do-you-know-your-macos-keyboard-shortcuts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<media:content url="https://wadetregaskis.com/wp-content/uploads/2024/01/macOS-keyboard-shortcuts-quiz.webp" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">7356</post-id>	</item>
		<item>
		<title>getifaddrs never specifies broadcast addresses</title>
		<link>https://wadetregaskis.com/getifaddrs-never-specifies-broadcast-addresses/</link>
					<comments>https://wadetregaskis.com/getifaddrs-never-specifies-broadcast-addresses/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 27 Apr 2023 19:25:36 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[getifaddrs]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Undocumented]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=5250</guid>

					<description><![CDATA[Apple &#8220;Feedback&#8221; #12149764. According to man 3 getifaddrs: The ifa_dstaddr field references the destination address on a P2P interface, if one exists, otherwise it contains the broadcast address. In my testing the ifa_dstaddr field is never non-null. I&#8217;m not sure I have any suitably configured P2P interfaces, but I definitely have interfaces with broadcast capabilities&#8230; <a class="read-more-link" href="https://wadetregaskis.com/getifaddrs-never-specifies-broadcast-addresses/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>Apple &#8220;Feedback&#8221; #12149764.</p>



<p>According to <code>man 3 getifaddrs</code>:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The ifa_dstaddr field references the destination address on a P2P interface, if one exists, otherwise it contains the broadcast address.</p>
</blockquote>



<p>In my testing the <code>ifa_dstaddr</code> field is never non-null.  I&#8217;m not sure I have any suitably configured P2P interfaces, but I definitely have interfaces with broadcast capabilities and <code>getifaddrs</code> reports them as having no broadcast address (even though it correctly notes they support broadcasting, in <code>ifa_flags</code>).</p>



<p>This is on macOS Ventura 13.3.1.  I have no idea if this applies to other versions of macOS, or other OS&#8217;s.</p>



<p>It appears there&#8217;s a workaround, though &#8211; the broadcast address is deterministic based on the IP address &amp; netmask, <a rel="noreferrer noopener external" href="https://en.wikipedia.org/wiki/Broadcast_address#IP_networking" data-type="URL" data-id="https://en.wikipedia.org/wiki/Broadcast_address#IP_networking" target="_blank" data-wpel-link="external">according to Wikipedia</a>, so you don&#8217;t technically need <code>getifaddrs</code> to spell it out for you.  That&#8217;s for AF_INET (IPv4) networks.  IPv6 doesn&#8217;t really have the same notion of a broadcast address anyway, and for other network types I have no idea if the concept applies or if there&#8217;s workarounds for this <code>getifaddr</code> bug.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/getifaddrs-never-specifies-broadcast-addresses/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5250</post-id>	</item>
		<item>
		<title>getifaddrs returns truncated sockaddr_in&#8217;s for AF_INET ifa_netmasks</title>
		<link>https://wadetregaskis.com/getifaddrs-returns-truncated-sockaddr_ins-for-af_inet-ifa_netmasks/</link>
					<comments>https://wadetregaskis.com/getifaddrs-returns-truncated-sockaddr_ins-for-af_inet-ifa_netmasks/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Thu, 27 Apr 2023 18:57:02 +0000</pubDate>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[getifaddrs]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Undocumented]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=5247</guid>

					<description><![CDATA[Apple &#8220;Feedback&#8221; #12149675. Some netmasks returned by getifaddrs have family of AF_INET yet a length less than sizeof(sockaddr_in), e.g. 5, 6, 7, or 8. On macOS Ventura 13.3.1, at least. It looks like it&#8217;s actually allocating only eight bytes for the ifa_netmask (not the 16 that is the size of sockaddr_in per MacOSX13.3.sdk/usr/include/netinet/in.h), as it&#8230; <a class="read-more-link" href="https://wadetregaskis.com/getifaddrs-returns-truncated-sockaddr_ins-for-af_inet-ifa_netmasks/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>Apple &#8220;Feedback&#8221; #12149675.</p>



<p>Some netmasks returned by <code>getifaddrs</code> have family of <code>AF_INET</code> yet a length less than <code>sizeof(sockaddr_in)</code>, e.g. 5, 6, 7, or 8.  On macOS Ventura 13.3.1, at least.</p>



<p>It looks like it&#8217;s actually allocating only eight bytes for the <code>ifa_netmask</code> (not the 16 that is the size of <code>sockaddr_in</code> per <code>MacOSX13.3.sdk/usr/include/netinet/in.h</code>), as it clearly has a different <code>sockaddr_in</code> immediately after it, e.g.:</p>



<pre class="wp-block-preformatted">sockaddr
  - sa_len : 5
  - sa_family : 2
  ▿ sa_data : 14 elements
    - .0 : 0
    - .1 : 0
    - .2 : 255
    - .3 : 0
    - .4 : 0
    - .5 : 0
    - .6 : 16 // This is obviously the start of the next sockaddr_in; a correct entry with length of 16.
    - .7 : 2
    - .8 : 0
    - .9 : 0
    - .10 : 127
    - .11 : 0
    - .12 : 0
    - .13 : 1</pre>



<p>It&#8217;s thus clear that it&#8217;s both wrong about the actual length in memory and it is indeed truncating the <code>sockaddr_in</code> structure, although it looks like it&#8217;s actually including the full address (the lo0 netmask in the above example is indeed 255.0.0.0).</p>



<p>Here&#8217;s another example, where the netmask is 255.255.255.0:</p>



<pre class="wp-block-preformatted">▿ sockaddr
  - sa_len : 7
  - sa_family : 2
  ▿ sa_data : 14 elements
    - .0 : 0
    - .1 : 0
    - .2 : 255
    - .3 : 255
    - .4 : 255
    - .5 : 0
    - .6 : 16 // Again, clearly the start of the next sockaddr_in.
    - .7 : 2
    - .8 : 0
    - .9 : 0
    - .10 : 192
    - .11 : 168
    - .12 : 0
    - .13 : 24</pre>



<p>So you can see it&#8217;s:</p>



<ul class="wp-block-list">
<li>Only allocating up to the address of <code>sockaddr_in</code>, not counting the padding (so <code>sizeof(sockaddr_in)</code>, <code>MemoryLayout&lt;sockaddr_in>.size</code>, etc disagree with what <code>getifaddrs</code> is doing), and</li>



<li>Weirdly truncating the stated length (<code>sin_len</code>) to the end of the non-zero bytes in the netmask.</li>
</ul>



<p>This is undocumented (well, all these data structures are completely undocumented 😔) and is all very messy.  <code>getifaddrs</code> should just provide the full <code>sockaddr_in</code> without any of this weirdness, so that users which blindly cast to <code>sockaddr_in</code> (without checking <code>sin_len</code>) don&#8217;t risk segmentation faults or reading corrupt data.</p>



<p>I have no idea why it does this <em>only</em> for <code>ifa_netmask</code>, not <code>ifa_addr</code> or <code>ifa_dstaddr</code>.  That discrepancy just makes it even more troublesome.</p>



<p>As far as I can tell there are no similar issues with <code>AF_INET6</code> netmasks, although without knowing under what criteria it&#8217;s truncating, I can&#8217;t be sure I have all relevant examples covered on the happenstance networks of my laptop.</p>



<p>For these systems, there&#8217;s seemingly not much you can do… it seems you have to hard-code the assumption that <code>ifa_netmask</code> contains exactly &amp; only the first eight bytes of the <code>sockaddr_in</code>.  You have to completely ignore <code>sin_len</code> (at least if it&#8217;s less than eight).</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/getifaddrs-returns-truncated-sockaddr_ins-for-af_inet-ifa_netmasks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5247</post-id>	</item>
		<item>
		<title>iCloud ‘Optimize Mac Storage’ breaks the Mojave installer</title>
		<link>https://wadetregaskis.com/icloud-optimize-mac-storage-breaks-the-mojave-installer/</link>
					<comments>https://wadetregaskis.com/icloud-optimize-mac-storage-breaks-the-mojave-installer/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 01 Feb 2019 19:42:00 +0000</pubDate>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[High Sierra]]></category>
		<category><![CDATA[iCloud]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Mojave]]></category>
		<category><![CDATA[NTP]]></category>
		<category><![CDATA[Optimize Mac Storage]]></category>
		<category><![CDATA[Sad]]></category>
		<category><![CDATA[Snafu]]></category>
		<category><![CDATA[Useless error message]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/icloud-optimize-mac-storage-breaks-the-mojave-installer/</guid>

					<description><![CDATA[Yet another example of a really bizarre macOS bug that&#8217;s pretty inexcusable as a test escape, given it occurs with the default installation settings on a completely clean OS install. In short, the Mojave update installer does not work (on High Sierra at least) if you have &#8216;Optimize Mac Storage&#8217; enabled for iCloud Drive (System&#8230; <a class="read-more-link" href="https://wadetregaskis.com/icloud-optimize-mac-storage-breaks-the-mojave-installer/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[<p>Yet another example of a really bizarre macOS bug that&#8217;s pretty inexcusable as a test escape, given it occurs with the default installation settings on a completely clean OS install.</p>
<p>In short, the Mojave update installer does not work (on High Sierra at least) if you have &#8216;Optimize Mac Storage&#8217; enabled for iCloud Drive (System Preferences &gt; iCloud pane &gt; iCloud Drive Options… button &gt; Documents tab &gt; Optimize Mac Storage checkbox).</p>
<p>Specifically, the installer reports:</p>
<blockquote><p>Installation requires downloading important content. That content can&#8217;t be downloaded at this time. Try again later.</p>
</blockquote>
<p>…and indeed fails to download the actual Mojave update files (the installer app as &#8216;installed&#8217; via the App Store is merely a 22 MB bootstrapping app, that downloads the actual image only after you run it &amp; start the installation).</p>
<p>Even more obnoxiously, if you use the <a href="https://dosdude1.com/mojave/" data-wpel-link="external" target="_blank" rel="external noopener">dosdude1 Mojave Patcher Tool</a> to force-download the entire installer, as soon as it completes the 6.5 GB download and produces the &#8216;Install macOS Mojave&#8217; app in /Applications, the system deletes the downloaded installation files out from under that app, rendering it just as broken as the official App Store version. Infuriating.</p>
<p>Aside: to be clear, turning off &#8216;Optimize Mac Storage&#8217; enabled me to produce &#8211; and <em>keep</em> &#8211; a working installer as downloaded by dosdude1&#8217;s tool. I did not verify that it also fixes the regular installer as downloaded via the App Store.</p>
<p>I also ran into the &#8220;The recovery server could not be contacted&#8221; error message even before all the above, but thankfully that was fixable via the means normally prescribed online &#8211; running &#8220;sudo ntpdate -u time.apple.com&#8221;.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/icloud-optimize-mac-storage-breaks-the-mojave-installer/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4337</post-id>	</item>
		<item>
		<title>tmutil is broken by SIP in Mojave</title>
		<link>https://wadetregaskis.com/tmutil-is-broken-by-sip-in-mojave/</link>
					<comments>https://wadetregaskis.com/tmutil-is-broken-by-sip-in-mojave/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Sun, 07 Oct 2018 22:57:31 +0000</pubDate>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[Disk Utility]]></category>
		<category><![CDATA[diskutil]]></category>
		<category><![CDATA[Full Disk Access]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[Mojave]]></category>
		<category><![CDATA[SIP]]></category>
		<category><![CDATA[Time Machine]]></category>
		<category><![CDATA[tmutil]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=4231</guid>

					<description><![CDATA[A diskutil bug unceremoniously erased an entire hard drive of mine a few weeks back. &#160;While I was able to successfully (AFAICT) restore the drive&#8217;s contents to it from various backups, the erasure gave the drive a new identity (UUID, specifically). &#160;The next time Time Machine ran, it compounded the diskutil bug by also unceremoniously&#8230; <a class="read-more-link" href="https://wadetregaskis.com/tmutil-is-broken-by-sip-in-mojave/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>A diskutil bug unceremoniously erased an entire hard drive of mine a few weeks back. &nbsp;While I was able to successfully (AFAICT) restore the drive&#8217;s contents to it from various backups, the erasure gave the drive a new identity (UUID, specifically). &nbsp;The next time Time Machine ran, it compounded the diskutil bug by also unceremoniously deleting all my old backups (bar one, the latest), because it didn&#8217;t recognise the new drive with identical contents to the old drive as being the same drive, and tried to back it up again, requiring way more space, causing all existing backups to be purged, etc.</p>



<p>Sigh.</p>



<p>It turns out there&#8217;s actually a nominally supported way to address exactly this scenario &#8211; <code>tmutil associatedisk</code> (kudos to <a href="https://simon.heimlicher.com/technology/time-machine-inherit-backup-using-tmutil/" data-wpel-link="external" target="_blank" rel="external noopener">Simon Heimlicher for documenting this</a>).  From the man page:</p>



<pre class="wp-block-preformatted">   <strong>associatedisk</strong> [-a] <span style="text-decoration: underline;">mount_point</span> <span style="text-decoration: underline;">snapshot_volume</span>
           Bind a snapshot volume directory to the specified local disk, thereby reconfigur-
           ing the backup history. Requires root privileges.


           In Mac OS X, HFS+ volumes have a persistent UUID that is assigned when the file
           system is created. Time Machine uses this identifier to make an association
           between a source volume and a snapshot volume. Erasing the source volume creates
           a new file system on the disk, and the previous UUID is not retained. The new
           UUID causes the source volume -> snapshot volume association to be broken. If one
           were just erasing the volume and starting over, it would likely be of no real
           consequence, and the new UUID would not be a concern; when erasing a volume in
           order to clone another volume to it, recreating the association may be desired.


           A concrete example of when and how you would use associatedisk:


           After having problems with a volume, you decide to erase it and manually restore
           its contents from a Time Machine backup or copy of another nature. (I.e., not via
           Time Machine System Restore or Migration Assistant.) On your next incremental
           backup, the data will be copied anew, as though none of it had been backed up
           before. Technically, it is true that the data has not been backed up, given the
           new UUID. However, this is probably not what you want Time Machine to do. You
           would then use associatedisk to reconfigure the backup so it appears that this
           volume has been backed up previously:


           thermopylae:~ thoth$ sudo tmutil associatedisk [-a] "/Volumes/MyNewStuffDisk"
           "/Volumes/Chronoton/Backups.backupdb/thermopylae/Latest/MyStuff"


           The result of the above command would associate the snapshot volume <span style="text-decoration: underline;">MyStuff</span> in
           the specified snapshot with the source volume <span style="text-decoration: underline;">MyNewStuffDisk</span>. The snapshot volume
           would also be renamed to match. The -a option tells associatedisk to find all
           snapshot volumes in the same machine directory that match the identity of
           <span style="text-decoration: underline;">MyStuff</span>, and then perform the association on all of them.
</pre>



<p>Perfect &#8211; and I particularly like the subtext of the prose, which seems to be a subtle acknowledgment that this is a thing that happens frequently, and that macOS&#8217;s default behaviour is stupid… &#8220;recreating the association may be desired&#8221;. &nbsp;No shit.</p>



<p>Unfortunately, that command doesn&#8217;t work in Mojave. &nbsp;I&#8217;m apparently not <a href="https://forums.macrumors.com/threads/unable-to-inherit-previous-time-machine.2144061/" data-wpel-link="external" target="_blank" rel="external noopener">the first person to notice</a>.</p>



<p>It appears the tightened security, and in particular expansion of SIP to cover many more parts of the system including Time Machine backups, are to blame. &nbsp;Even granting <code>tmutil</code> Full Disk Access etc in the system security settings is of no use (contrary to the stated purpose of Full Disk Access).</p>



<p>So you have to <a href="https://iboysoft.com/howto/disable-system-integrity-protection-macos.html" data-wpel-link="external" target="_blank" rel="external noopener">disable SIP first</a> &#8211; which requires a reboot, obnoxiously &#8211; and only then does <code>tmutil</code> work again. &nbsp;You&#8217;ll want to enable SIP again once you&#8217;re done, most likely, as the protections it provides are useful &#8211; it appears <code>tmutil</code> nve eeds to be updated to account for the new protections.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/tmutil-is-broken-by-sip-in-mojave/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4231</post-id>	</item>
		<item>
		<title>Creating a Fusion Drive from an existing disk, without erasing it</title>
		<link>https://wadetregaskis.com/creating-a-fusion-drive-from-an-existing-disk-without-erasing-it/</link>
					<comments>https://wadetregaskis.com/creating-a-fusion-drive-from-an-existing-disk-without-erasing-it/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Sun, 22 Jul 2018 18:01:02 +0000</pubDate>
				<category><![CDATA[Howto]]></category>
		<category><![CDATA[APFS]]></category>
		<category><![CDATA[CoreStorage]]></category>
		<category><![CDATA[Finder]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[RAID]]></category>
		<category><![CDATA[Terminal]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=4160</guid>

					<description><![CDATA[Note: this guide was written circa macOS 10.13 High Sierra, in 2018. Its accuracy has not been verified for newer macOS releases. Curiously there&#8217;s very little information out on the web (at time of writing) on how to create (or expand) a Fusion Drive without erasing its contents first. &#160;It&#8217;s entirely possible to do so&#8230; <a class="read-more-link" href="https://wadetregaskis.com/creating-a-fusion-drive-from-an-existing-disk-without-erasing-it/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<p><strong>Note</strong>:  this guide was written circa macOS 10.13 High Sierra, in 2018.  Its accuracy has not been verified for newer macOS releases.</p>
</div></div>



<p>Curiously there&#8217;s very little information out on the web (at time of writing) on how to create (or expand) a Fusion Drive <em>without</em> erasing its contents first. &nbsp;It&#8217;s entirely possible to do so &#8211; in <em>some</em> circumstances &#8211; and is probably what most people want, yet almost every &#8216;create your own Fusion Drive&#8217; guide presumes you&#8217;re happy losing all your data in the process.&nbsp;🤪</p>



<p>So here&#8217;s how to do it, step-by-step. &nbsp;The process is fairly straightforward, but there are some edge cases that might apply to you. &nbsp;The obvious &amp; most common ones are covered by this guide, but if you find yourself in a situation that isn&#8217;t, please leave a comment at the bottom of this guide explaining what&#8217;s not working for you, and I&#8217;ll try to help you out.</p>



<p>Don&#8217;t be intimidated by the length of this guide &#8211; in the common case it&#8217;s only six steps, each a single operation, and someone familiar with the steps involved can complete this whole process in just a couple of minutes. &nbsp;The verbosity of this guide is because it takes great pains to explain precisely what&#8217;s going on in order to prevent confusion &amp; error. &nbsp;Read it carefully, and take it slow &#8211; there is no undo option for any of these commands.</p>



<h2 class="wp-block-heading">Seriously important warning</h2>



<p class="has-drop-cap">⚠️Manipulating your computer&#8217;s storage at the low level described in this guide is <strong>dangerous</strong>. &nbsp;In <em>principle</em> it&#8217;s safe as long as you enter all the right commands. &nbsp;However,&nbsp;<strong>a single typo in the wrong place can destroy all your data</strong>&nbsp;&#8211; e.g. a &#8216;2&#8217; instead of a &#8216;1&#8217; when typing a disk identifier. &nbsp;Furthermore, in practice Apple&#8217;s tools are not completely reliable, and it&#8217;s possible that even with <em>you</em> doing everything exactly right, something will still go wrong and your data might be lost.</p>



<p>Make sure all of your data is reliably &amp; <em>verifiably</em> backed up before attempting any of this. &nbsp;<strong>Make sure your backups are not connected to your computer while you attempt this</strong> &#8211; if they are, they&#8217;re also just one typo or software bug or hardware glitch away from being destroyed too.</p>



<p>It&#8217;s recommended that you disconnect all other disks while you go through this process. &nbsp;That way you eliminate the possibility of damaging them, whether as the result of a typo, confusion between similar disks, or a software bug.</p>



<h2 class="wp-block-heading">A quick word on critical terminology</h2>



<ul class="wp-block-list">
<li><strong>&#8220;Volume&#8221;</strong> in this context is what you might casually call a &#8220;disk&#8221; &#8211; it&#8217;s what you see as a disk icon on your desktop, for example, or listed under the &#8216;Devices&#8217; section in the Finder window sidebars.<br><br>All Macs have at least one volume &#8211; the boot volume, usually the internal SSD, Fusion Drive, or hard disk &#8211; but you can of course add any number more of them via USB, Thunderbolt, Firewire, or even internally if you have an old enough Mac.<br><br>&#8220;Volume&#8221; is used rather than &#8220;disk&#8221; because the latter is ambiguous &#8211; lots of things are called &#8220;disks&#8221;, including many things that aren&#8217;t actually disks in any physical or practical sense. &nbsp;But &#8220;volume&#8221; has a specific meaning in the Mac storage lexicon, and you&#8217;ll see the word used frequently by Apple&#8217;s tools. &nbsp;There are different types of volumes &#8211; &#8220;physical&#8221;, &#8220;logical&#8221;, etc. &nbsp;For the most part you don&#8217;t need to worry about those distinctions here &#8211; it&#8217;ll be pointed out specifically if &amp; when you do. &nbsp;Similarly there are related constructs like &#8220;volume groups&#8221; and &#8220;volume families&#8221;, but likewise you don&#8217;t need to know exactly what those mean for the purposes of this task. &nbsp;Just be aware that these distinctions exist, and read the instructions very carefully to see exactly which one is needed &#8211; particularly when dealing with UUIDs, as you&#8217;ll see.</li>



<li><strong>&#8220;Disk&#8221;</strong> is thus used only to refer to physical disks &#8211; things you can hold in your hand. &nbsp;A disk can contain many volumes (sometimes called partitions).</li>



<li><strong>&#8220;Target volume&#8221;</strong> is used to denote the particular volume you want converted into a Fusion Drive. &nbsp;It should be your <em>existing</em> volume, the one with your data already on it &#8211; data that you want preserved.</li>



<li><strong>&#8220;Additional disk&#8221;</strong> is used to denote the SSD (or similar) that you want to fuse into your target volume, to create your Fusion Drive. &nbsp;In contrast to your target volume, its contents will <em>not</em> be preserved. &nbsp;Make sure you move any data on that disk somewhere safe before starting this process. &nbsp;Also note the distinction between disk and volume here &#8211; you can only add whole disks to Fusion Drives, not volumes &#8211; if your additional disk has multiple volumes on it (e.g. a Boot Camp partition in addition to a Mac volume) <em>all</em> of those will be erased during the fusion process.</li>
</ul>



<h2 class="wp-block-heading">Procedure</h2>


<div class="wp-block-image">
<figure class="alignright size-thumbnail is-resized"><img loading="lazy" decoding="async" width="256" height="256" src="https://wadetregaskis.com/wp-content/uploads/2018/07/Terminal-icon-256x256.webp" alt="Terminal app icon" class="wp-image-4161" style="object-fit:cover;width:128px;height:128px" srcset="https://wadetregaskis.com/wp-content/uploads/2018/07/Terminal-icon-256x256.webp 256w, https://wadetregaskis.com/wp-content/uploads/2018/07/Terminal-icon-512x512.webp 512w, https://wadetregaskis.com/wp-content/uploads/2018/07/Terminal-icon.webp 1024w" sizes="auto, (max-width: 256px) 100vw, 256px" /></figure>
</div>


<h3 class="wp-block-heading">1. &nbsp;Open Terminal.</h3>



<p>All of the following commands are entered in Terminal, unless otherwise specified. &nbsp;If you&#8217;re an admin user you won&#8217;t need to do anything more than what&#8217;s listed here, nor enter your login password at any point (nor, similarly, use sudo at any point). &nbsp;If you&#8217;re not an admin user, you might be prompted for an admin&#8217;s credentials, or you might have to run all the following commands via sudo (ideally as an admin, or as root if necessary).</p>



<h3 class="wp-block-heading">2. &nbsp;List your existing <a href="https://en.wikipedia.org/wiki/Core_Storage" data-wpel-link="external" target="_blank" rel="external noopener">Core Storage</a> volumes.</h3>



<p>Enter the following command in Terminal:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs list</code></p>
</blockquote>



<p>The output will ideally look something like:</p>



<pre class="wp-block-preformatted">CoreStorage logical volume groups (1 found)
|
+-- Logical Volume Group CF936785-3F07-4414-8512-F94E26F0ABC3
 &nbsp; =========================================================
 &nbsp; Name: &nbsp; &nbsp; &nbsp; &nbsp; Macintosh HD
 &nbsp; Status: &nbsp; &nbsp; &nbsp; Online
 &nbsp; Size: &nbsp; &nbsp; &nbsp; &nbsp; 6000831135744 B (6.0 TB)
 &nbsp; Free Space: &nbsp; 15101952 B (15.1 MB)
 &nbsp; |
 &nbsp; +-&lt; Physical Volume C68C0FB4-B85F-4376-B9C4-BC744520A5FA
 &nbsp; | &nbsp; ----------------------------------------------------
 &nbsp; | &nbsp; Index:&nbsp; &nbsp; 0
 &nbsp; | &nbsp; Disk: &nbsp; &nbsp; disk99s2
 &nbsp; | &nbsp; Status: &nbsp; Online
 &nbsp; | &nbsp; Size: &nbsp; &nbsp; 6000831135744 B (6.0 TB)
 &nbsp; |
 &nbsp; +-&gt; Logical Volume Family 33A1CC8F-A3AF-4B5D-8EA0-379F4C9D6D0E
 &nbsp;   &nbsp; ----------------------------------------------------------
 &nbsp; &nbsp; &nbsp; Encryption Type: &nbsp; &nbsp; &nbsp; &nbsp; AES-XTS
 &nbsp; &nbsp; &nbsp; Encryption Status: &nbsp; &nbsp; &nbsp; Unlocked
 &nbsp; &nbsp; &nbsp; Conversion Status: &nbsp; &nbsp; &nbsp; Complete
 &nbsp; &nbsp; &nbsp; High Level Queries:&nbsp; &nbsp; &nbsp; Fully Secure
 &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Passphrase Required
 &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Accepts New Users
 &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Has Visible Users
 &nbsp; &nbsp; &nbsp; |&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Has Volume Key
 &nbsp; &nbsp; &nbsp; |
 &nbsp; &nbsp; &nbsp; +-&gt; Logical Volume 10DE6E37-6701-46F8-8E1F-42759C42B5A0
 &nbsp; &nbsp; &nbsp;   &nbsp; ---------------------------------------------------
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Disk:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; disk100
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Status:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Online
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Size (Total):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 6000471965696 B (6.0 TB)
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Revertible:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; No
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LV Name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Macintosh HD
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Volume Name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Macintosh HD
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Content Hint:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Apple_HFS</pre>



<p>If you see your target volume in there as a Logical Volume &#8211; e.g. like &#8220;Macintosh HD&#8221; in the above example &#8211; then you&#8217;re all set to move on to step 3, making note of two things:</p>



<ol class="wp-block-list">
<li>The target logical volume&#8217;s UUID (10DE6E37-6701-46F8-8E1F-42759C42B5A0 in the above example). &nbsp;You&#8217;ll need this in step 6.</li>



<li>The target logical volume&#8217;s volume group UUID&nbsp;(CF936785-3F07-4414-8512-F94E26F0ABC3 in the above example). &nbsp;You&#8217;ll need this in step 5.</li>
</ol>



<p>If instead there are no volumes listed, or your target volume isn&#8217;t one of them, then you will need to perform the extra steps below.</p>



<p>If your target volume&#8217;s name does appear, but not on any Logical Volume &#8211; perhaps only as a Logical Volume Group &#8211; then do not proceed; your scenario is not covered by this guide. &nbsp;Please leave a comment at the bottom of this guide, so I can help you figure out what&#8217;s going on and what to do in your specific circumstances.</p>



<h4 class="wp-block-heading">2B. &nbsp;List non-Core Storage volumes.</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil list</code></p>
</blockquote>



<p>You&#8217;ll see a list of one or more disks &amp; their constituent volumes, e.g.:</p>



<pre class="wp-block-preformatted">/dev/disk99 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         6.0 TB     disk99
   1:                        EFI EFI                     314.6 MB   disk99s1
   2:                  Apple_HFS Macintosh HD            6.0 TB     disk99s2
   3:                 Apple_Boot Boot OS X               134.2 MB   disk99s3</pre>



<p>Make sure your target volume appears somewhere in that list. &nbsp;If it doesn&#8217;t… then I&#8217;m not sure what to tell you &#8211; your target volume appears to not be connected to your computer.</p>



<p>You&#8217;d typically be using Core Storage as a side-effect of encrypting your volumes (<em>iff</em> they&#8217;re HFS-formatted), or if you&#8217;re using Apple&#8217;s software RAID. &nbsp;If your target volume is APFS-formatted, however, and it&#8217;s <em>not</em> already using Core Storage underneath, you might be out of luck &#8211; you can try following 2C Option 2 below on the APFS Container volume, but I haven&#8217;t tried it myself so I don&#8217;t know if Apple&#8217;s tools support it (nor whether they can do the conversion correctly &amp; reliably &#8211; proceed at your own risk).</p>



<h4 class="wp-block-heading">2C Option 1: &nbsp;Encrypt your target volume.</h4>



<p>The easiest and most fool-proof way to do this is to right-click on the target volume anywhere it appears in the Finder, and choose the &#8216;<em>Encrypt &#8220;&lt;volume name&gt;</em>&#8220;…&#8217; option from the contextual menu. &nbsp;You&#8217;ll be prompted to enter a passphrase with which to encrypt the volume, and the operation might take some time, depending on the speed &amp; size of your target volume.</p>



<p>This is also an excellent option because you should <em>always</em> encrypt your volumes, for your own security &amp; privacy.</p>



<p>Alternatively, you can use Terminal:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs convert &lt;disk identifier> -stdinpassphrase</code></p>
</blockquote>



<p>The disk identifier is the name associated with your target volume that looks like &#8220;diskXsY&#8221; where X &amp; Y are numbers (e.g. disk99s2 in the prior example).</p>



<p>You&#8217;ll be prompted to enter the passphrase to encrypt the volume with.</p>



<p>Again, the operation might take some time, depending on the speed &amp; size of your target volume.</p>



<h4 class="wp-block-heading">2C Option 2: &nbsp;Convert your target volume to Core Storage without encrypting it.</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs convert &lt;disk identifier></code></p>
</blockquote>



<p>The disk identifier is the name associated with your target volume that looks like &#8220;diskXsY&#8221; where X &amp; Y are numbers (e.g. disk99s2 in the prior example) &#8211; see under the &#8216;IDENTIFIER&#8217; column in the output of diskutil list from step 2B.</p>



<p>The operation might take some time, depending on the speed &amp; size of your target volume.</p>



<h4 class="wp-block-heading">2D. &nbsp;Verify the conversion succeeded.</h4>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs list</code></p>
</blockquote>



<p>As per the instructions in step 2, you should see your target volume now listed as a Logical Volume.</p>



<h3 class="wp-block-heading">3. &nbsp;Determine your additional disk&#8217;s identifier.</h3>



<p>This is the disk you want to fuse into your target volume in order to create your Fusion Drive. &nbsp;It will ideally be blank to begin with &#8211; e.g. you just bought it &amp; connected it to your computer, and have no yet formatted it or otherwise used it.</p>



<p>If it is not blank, you need to move all your data off of it &#8211; <strong>it will be essentially erased as part of the fusion process</strong> (your target volume won&#8217;t be, so potentially you can move the data to there).</p>



<p>Also note the distinction between disk and volume here &#8211; you can only add whole disks to Fusion Drives, not volumes &#8211; if your additional disk has multiple volumes on it (e.g. a Boot Camp partition in addition to a Mac volume)&nbsp;<span style="font-style: italic;">all</span>&nbsp;of those will be erased during the fusion process. &nbsp;Make sure to move your data off of&nbsp;<em>all</em> those volumes.</p>



<p>To determine the disk identifier for your additional disk, run:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil list</code></p>
</blockquote>



<p>The output should look something like the following:</p>



<pre class="wp-block-preformatted">/dev/disk99 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         6.0 TB     disk99
   1:                        EFI EFI                     314.6 MB   disk99s1
   2:          Apple_CoreStorage Macintosh HD            6.0 TB     disk99s2
/dev/disk100 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +16.0 TB    disk100
                                 Logical Volume on disk99
                                 10DE6E37-6701-46F8-8E1F-42759C42B5A0
                                 Unlocked Encrypted
/dev/disk101 (external, physical):</pre>



<p>In the above example, the last entry is the additional disk &#8211; it has the disk identifier disk101. &nbsp;In this example it is not formatted, so it has no volumes listed on it.</p>



<h3 class="wp-block-heading">4. &nbsp;Check that you&#8217;ve identified the correct additional disk.</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil info &lt;disk identifier></code></p>
</blockquote>



<p>The output should look something like:</p>



<pre class="wp-block-preformatted">   Device Identifier:        disk101
   Device Node:              /dev/disk101
   Whole:                    Yes
   Part of Whole:            disk101
   Device / Media Name:      CT2000MX500SSD1

   Volume Name:              Not applicable (no file system)
   Mounted:                  Not applicable (no file system)
   File System:              None

   Content (IOContent):      GUID_partition_scheme
   OS Can Be Installed:      No
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified

   Disk Size:                2.0 TB (2000398934016 Bytes) (exactly 3907029168 512-Byte-Units)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         Not applicable (no file system)

   Device Location:          External
   Removable Media:          Fixed

   Solid State:              Yes
   Virtual:                  No
   Hardware AES Support:     No</pre>



<p>Check that info to make sure it matches what you&#8217;re expecting &#8211; in particular things like the device / media name (model number), and the disk&#8217;s size. &nbsp;Be extremely careful if you have multiple disks connected to your computer of the same type or size &#8211; remember that this disk will be erased during the fusion process, so you definitely do not want to pick the wrong disk by mistake. &nbsp;If in doubt &#8211; in fact as a best practice regardless &#8211; disconnect all other disks first, to ensure you can&#8217;t target them by mistake.</p>



<h3 class="wp-block-heading">5. &nbsp;Add your additional disk to your target volume&#8217;s Core Storage volume group.</h3>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs addDisk &lt;target logical volume's volume group UUID> &lt;additional disk's identifier></code></p>
</blockquote>



<p>If all goes well, you&#8217;ll see something like:</p>



<pre class="wp-block-preformatted">Started CoreStorage operation on disk101
Unmounting disk101
Repartitioning disk101
Unmounting disk
Creating the partition map
Rediscovering disk101
Adding disk101s2 to Logical Volume Group
Switching disk101s2 to Core Storage
Waiting for Logical Volume Group to come back online
Core Storage PV UUID: D0E04199-9402-46EF-8481-98C8BADEF8FE
Finished CoreStorage operation on disk101
</pre>



<p>If you wish you can also confirm that the logical volume group now has your additional disk listed as a physical volume underneath it:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs list</code></p>
</blockquote>



<p>You should now see something like:</p>



<pre class="wp-block-preformatted">CoreStorage logical volume groups (1 found)
|
+-- Logical Volume Group CF936785-3F07-4414-8512-F94E26F0ABC3
   =========================================================
   Name:         Macintosh HD
   Status:       Online
   Size:         6000831135744 B (6.0 TB)
   Free Space:   15101952 B (15.1 MB)
   |
   +-&lt; Physical Volume C68C0FB4-B85F-4376-B9C4-BC744520A5FA
   |   ----------------------------------------------------
   |   Index:    0
   |   Disk:     disk99s2
   |   Status:   Online
   |   Size:     6000831135744 B (6.0 TB)
   |
   +-&lt; Physical Volume D0E04199-9402-46EF-8481-98C8BADEF8FE
   |   ----------------------------------------------------
   |   Index:    1
   |   Disk:     disk101s2
   |   Status:   Online
   |   Size:     2000054960128 B (2.0 TB)
   |
   +-&gt; Logical Volume Family 33A1CC8F-A3AF-4B5D-8EA0-379F4C9D6D0E
       ----------------------------------------------------------
       Encryption Type:         AES-XTS
       Encryption Status:       Unlocked
       Conversion Status:       Complete
       High Level Queries:      Fully Secure
       |                        Passphrase Required
       |                        Accepts New Users
       |                        Has Visible Users
       |                        Has Volume Key
       |
       +-&gt; Logical Volume 10DE6E37-6701-46F8-8E1F-42759C42B5A0
           ---------------------------------------------------
           Disk:                  disk100
           Status:                Online
           Size (Total):          6000471965696 B (6.0 TB)
           Revertible:            No
           LV Name:               Macintosh HD
           Volume Name:           Macintosh HD
           Content Hint:          Apple_HFS</pre>



<p>Note however that the logical volume &#8211; your target volume; your would-be Fusion Drive &#8211; is still listed as being the same, older size. &nbsp;It&#8217;s not yet making full use of the additional disk you added &#8211; that&#8217;s the next &amp; last step.</p>



<h3 class="wp-block-heading">6. &nbsp;Resize your target volume to make use of the new space from your additional disk.</h3>



<p>Since Fusion Drives split data across their constituent disks (as opposed to mirroring it, as you might do in a RAID setup for improved reliability), their size is the sum of all the disks you put into them. &nbsp;You can in fact have multiple volumes on a single Fusion Drive, splitting up its total space amongst them however you wish, and having them share all the underlying disks on a kind of first-come-first-served basis. &nbsp;However, the details of that scenario are left as an exercise for the reader &#8211; here we&#8217;ll only look at the simple, most common example where you just have a single volume on your Fusion Drive.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>diskutil cs resizeVolume &lt;target volume's UUID> 0g</code></p>
</blockquote>



<p>The target volume&#8217;s UUID was listed in the output of step 2, from the <code>diskutil cs list</code> command.</p>



<p>When you run the resizeVolume command, it will typically take a little while &#8211; it does some sanity checking &amp; validation of the target volume first, to make sure it&#8217;s in good health to begin with, and then the resize operation itself can take a few moments. &nbsp;You should see output similar to:</p>



<pre class="wp-block-preformatted">The Core Storage Logical Volume UUID is 10DE6E37-6701-46F8-8E1F-42759C42B5A0
Started CoreStorage operation
Verifying file system
Volume was successfully unmounted
Performing fsck_hfs -fn -x /dev/rdisk100
Checking Journaled HFS Plus volume
Checking extents overflow file
Checking catalog file
Checking multi-linked files
Checking catalog hierarchy
Checking extended attributes file
Checking volume bitmap
Checking volume information
The volume Macintosh HD appears to be OK
File system check exit code is 0
Restoring the original state found as mounted
Growing Logical Volume
Resizing Core Storage Logical Volume structures
Resized Core Storage Logical Volume to 8,000,242,745,344 bytes
Growing file system
Finished CoreStorage operation</pre>



<p>You&#8217;re now done! &nbsp;Your target volume is now a Fusion Drive, ready for use, and should reflect its new, enlarged size in the Finder and elsewhere.</p>



<p>Note: &nbsp;the new total size shown for your Fusion Drive will be slightly less than the sum of the underlying disks &#8211; usually by a few hundred megabytes. &nbsp;This is presumably because some space is reserved for Core Storage metadata and other essential system data.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/creating-a-fusion-drive-from-an-existing-disk-without-erasing-it/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<media:content url="https://wadetregaskis.com/wp-content/uploads/2018/07/Apple-Fusion-Drive-presentation-2048x1098.avif" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">4160</post-id>	</item>
		<item>
		<title>Apple Mail crashes on launch if connection logging is enabled</title>
		<link>https://wadetregaskis.com/apple-mail-crashes-on-launch-if-connection-logging-is-enabled/</link>
					<comments>https://wadetregaskis.com/apple-mail-crashes-on-launch-if-connection-logging-is-enabled/#comments</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 04 May 2018 16:11:24 +0000</pubDate>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[Apple Mail]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[crashtastic]]></category>
		<category><![CDATA[macOS]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=4112</guid>

					<description><![CDATA[This was a fun one.  Mail started crashing on launch for absolutely no apparent reason &#8211; nothing had changed to its config or similar in a long time.  The crash logs were all fingering an identical culprit &#8211; -[IMAPTaskManager secondaryIdleMailboxName] called on the wrong GCD queue: Process: Mail [19884] Path: /Applications/Mail.app/Contents/MacOS/Mail Identifier: com.apple.mail Version: 11.3&#8230; <a class="read-more-link" href="https://wadetregaskis.com/apple-mail-crashes-on-launch-if-connection-logging-is-enabled/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[<p>This was a fun one.  Mail started crashing on launch for absolutely no apparent reason &#8211; nothing had changed to its config or similar in a long time.  The crash logs were all fingering an identical culprit &#8211; <span style="font-family: Monospace;">-[IMAPTaskManager secondaryIdleMailboxName]</span> called on the wrong GCD queue:</p>
<pre>Process: Mail [19884]
Path: /Applications/Mail.app/Contents/MacOS/Mail
Identifier: com.apple.mail
Version: 11.3 (3445.6.18)
Build Info: Mail-3445006018000000~4
Code Type: X86-64 (Native)
Parent Process: ??? [1]
Responsible: Mail [19884]
User ID: …

Date/Time: 2018-04-19 16:44:45.717 -0700
OS Version: Mac OS X 10.13.4 (17E199)
Report Version: 12
Anonymous UUID: …

Sleep/Wake UUID: …

Time Awake Since Boot: 94000 seconds
Time Since Wake: 530 seconds

System Integrity Protection: enabled

Crashed Thread: 13 Dispatch queue: Task Manager Serialization Queue (QOS: UNSPECIFIED)

Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Application Specific Information:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'This method should only be called on the serialization queue'
terminating with uncaught exception of type NSException
abort() called

Application Specific Backtrace 1:
0 CoreFoundation 0x00007fff55da96bb __exceptionPreprocess + 171
1 libobjc.A.dylib 0x00007fff7d4c1942 objc_exception_throw + 48
2 CoreFoundation 0x00007fff55daf2a2 +[NSException raise:format:arguments:] + 98
3 Foundation 0x00007fff57ee7340 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 193
4 IMAP 0x00007fff6fe88959 -[IMAPTaskManager secondaryIdleMailboxName] + 216
5 IMAP 0x00007fff6fe880cb -[IMAPTask mailboxIsUserVisibleUsingDataSource:] + 180
6 IMAP 0x00007fff6fe6ab68 -[IMAPMailboxSyncTask _nextNetworkPriorityAndOperation:reservedNetworkPriority:] + 164
7 IMAP 0x00007fff6fe6c4ba -[IMAPMailboxSyncTask recalculatePriorities] + 398
8 IMAP 0x00007fff6fe67dd9 -[IMAPMailboxSyncTask initWithDataSource:taskManager:imapMailbox:fromStatus:forceFullSync:] + 766
9 IMAP 0x00007fff6fe931f7 -[IMAPTaskManager _syncMailboxWithDataSource:withIMAPMailbox:fromStatus:forceFullSync:userInitiated:] + 370
10 IMAP 0x00007fff6fe92e68 -[IMAPTaskManager syncMailboxWithDataSource:withIMAPMailbox:fromStatus:forceFullSync:userInitiated:] + 240
11 IMAP 0x00007fff6fe9631a -[IMAPTaskManager didAddMessagesWithUnknownUID:toDataSource:] + 872
12 Foundation 0x00007fff57e4a5df __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7
13 Foundation 0x00007fff57e4a441 -[NSBlockOperation main] + 68
14 Foundation 0x00007fff57e488ee -[__NSOperationInternal _start:] + 778
15 Foundation 0x00007fff57e44917 __NSOQSchedule_f + 369
16 libdispatch.dylib 0x00007fff7e09ee08 _dispatch_client_callout + 8
17 libdispatch.dylib 0x00007fff7e0b1ed1 _dispatch_continuation_pop + 472
18 libdispatch.dylib 0x00007fff7e0a9783 _dispatch_async_redirect_invoke + 703
19 libdispatch.dylib 0x00007fff7e0a09f9 _dispatch_root_queue_drain + 515
20 libdispatch.dylib 0x00007fff7e0a07a5 _dispatch_worker_thread3 + 101
21 libsystem_pthread.dylib 0x00007fff7e3f0169 _pthread_wqthread + 1387
22 libsystem_pthread.dylib 0x00007fff7e3efbe9 start_wqthread + 13</pre>
<p>Long story short, the issue turns out to be having connection logging enabled.  That&#8217;d been turned on many months before in order to debug a different stupid Mail bug, and had been simply left on (deliberately IIRC, since Mail tends to bug-out quite often, so why not have logs already available when it comes time to debug it yet again?).</p>
<p>Connection logging is enabled or disabled by opening the &#8220;Connection Doctor&#8221; (Window menu &gt; Connection Doctor) and using the checkbox titled &#8220;Log Connection Activity&#8221;.</p>
<p>So how do you get to that checkbox when Mail crashes on launch?  Well, in this specific instance I was able to disable all mail accounts via System Preference&#8217;s Accounts pane, launch Mail, disable logging, quit Mail, re-enable all mail accounts via System Preferences, and then relaunch Mail to have it finally actually work.</p>
<p>From even just brief web searching, it&#8217;s clear that this issue has been present and well-known in Mail for a really long time.  Sigh.  Apple&#8217;s protestations that they care about software quality, or the Mac, are relentlessly undermined by their actual actions.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/apple-mail-crashes-on-launch-if-connection-logging-is-enabled/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4112</post-id>	</item>
		<item>
		<title>Your system has run out of application memory HUR HUR HUR</title>
		<link>https://wadetregaskis.com/your-system-has-run-out-of-application-memory-hur-hur-hur/</link>
					<comments>https://wadetregaskis.com/your-system-has-run-out-of-application-memory-hur-hur-hur/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Tue, 16 May 2017 17:22:47 +0000</pubDate>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Broken by design]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[deadlock]]></category>
		<category><![CDATA[disk space]]></category>
		<category><![CDATA[hung]]></category>
		<category><![CDATA[killall]]></category>
		<category><![CDATA[lies]]></category>
		<category><![CDATA[Lightroom]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[paging]]></category>
		<category><![CDATA[paused]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[Sad]]></category>
		<category><![CDATA[SIGCONT]]></category>
		<category><![CDATA[SIGSTOP]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[What do you want?]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=3913</guid>

					<description><![CDATA[I hate this dialog with the fire&#160;of a thousand suns. When this appears, it basically means one (or both) of two things: Quitting any of the listed applications is rarely the correct move. &#160;It&#8217;s often enough the case that none of them are the root cause, and you can kill all of them if you&#8230; <a class="read-more-link" href="https://wadetregaskis.com/your-system-has-run-out-of-application-memory-hur-hur-hur/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1078" height="944" src="https://wadetregaskis.com/wp-content/uploads/2017/05/22Your-system-has-run-out-of-application-memory22-dialog.webp" alt="" class="wp-image-3914" style="width:539px" srcset="https://wadetregaskis.com/wp-content/uploads/2017/05/22Your-system-has-run-out-of-application-memory22-dialog.webp 1078w, https://wadetregaskis.com/wp-content/uploads/2017/05/22Your-system-has-run-out-of-application-memory22-dialog-512x448@2x.webp 1024w, https://wadetregaskis.com/wp-content/uploads/2017/05/22Your-system-has-run-out-of-application-memory22-dialog-256x224.webp 256w, https://wadetregaskis.com/wp-content/uploads/2017/05/22Your-system-has-run-out-of-application-memory22-dialog-512x448.webp 512w" sizes="auto, (max-width: 1078px) 100vw, 1078px" /></figure>
</div>


<p>I hate this dialog with the fire&nbsp;of a thousand suns.</p>



<p>When this appears, it basically means one (or both) of two things:</p>



<ol class="wp-block-list">
<li>Some application went nuts and chewed through all your memory and/or disk space.</li>



<li>macOS got itself into a darkly comical &amp; embarrassing deadlock.</li>
</ol>



<p>Quitting any of the listed applications is rarely the correct move. &nbsp;It&#8217;s often enough the case that none of them are the root cause, and you can kill all of them if you want, but it won&#8217;t fix the problem.</p>



<p>One important thing to clarify first, though, is that this dialog does&nbsp;<em>not</em>&nbsp;necessarily use the term &#8216;memory&#8217; in the conventional sense &#8211; i.e. RAM. &nbsp;It&nbsp;can&nbsp;<em>also</em>&nbsp;refer to disk space. &nbsp;Unfortunately it doesn&#8217;t bother to distinguish between the two, which is particularly stupid of it since any possible resolution of the issue is&nbsp;<em>highly</em> dependent on which of the two cases it in fact is.</p>



<p>Thank goodness for iStatMenus, though, which in the most recent incident showed that I had ~20 GiB of RAM completely free (not even inactive, actually outright free). &nbsp;So immediately that rules out what the daft bloody dialog&#8217;s actually saying.</p>



<p>The worst thing about all this is when it&#8217;s #2 the occurs. &nbsp;For example, I had Lightroom do a 63-image panorama merge. &nbsp;As Lightroom is a gross memory pig when doing panorama merging, it consumed something like 40 GiB of memory. &nbsp;Which caused a bunch of stuff to page&nbsp;to disk. &nbsp;Which consumed all the disk space. &nbsp;Which led to that obnoxious dialog. &nbsp;Which&nbsp;<em>further</em> led to macOS in its infinite fucking wisdom &#8216;pausing&#8217; (SIGSTOPing) almost all running programs,&nbsp;<em>including</em> evidently whatever daemon actually handles paging. &nbsp;Thus when Lightroom actually completed the panorama merge&nbsp;and released all that memory, I now had 20 GiB of free memory and the system refused to use any of it to page back in all that memory it&#8217;d paged out. &nbsp;Because it was out of disk space.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="499" height="332" src="https://wadetregaskis.com/wp-content/uploads/2024/01/Tense.avif" alt="" class="wp-image-7320"/></figure>
</div>


<p>The only solution &#8211; short of hard rebooting and hoping it resolves itself &#8211; was to delete a bunch of files I actually do still&nbsp;want, but which will now have to be&nbsp;recovered from a backup. &nbsp;Great job macOS, thanks for all your help.</p>



<p>Of course, even once you do that and recover the system from the derpeche mode it put itself into, it won&#8217;t actually&nbsp;<em>unpause</em> any of the shit it broke. &nbsp;You have to do that manually. &nbsp;It pretends you can do that via that dialog that started the whole thing &#8211; assuming you left it open the entire time, blocking your view as you <em>actually</em> help the situation &#8211;&nbsp;but that only shows user-visible applications, not all the other system &amp; background processes that it&nbsp;<em>also</em> rudely halted.</p>



<p>So, simple tip for resuming everything:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><code>sudo killall -CONT -m '.'</code></p>
</blockquote>



<p>Elegant, after a fashion. &nbsp;Though every time, it reminds me that whomever named it &#8216;killall&#8217; was either not very friendly or not very wise.</p>



<p>Note that the system will probably still be a bit broken in places, as despite what macOS thinks, you can&#8217;t just blindly pause random system tasks and not have things get really, really confused. &nbsp;A reboot is always wise after seeing this dialog, to properly undo its fuckery.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/your-system-has-run-out-of-application-memory-hur-hur-hur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<media:content url="https://wadetregaskis.com/wp-content/uploads/2017/05/22Your-system-has-run-out-of-application-memory22-dialog.webp" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">3913</post-id>	</item>
		<item>
		<title>macOS 10.12.2 appears to have brought with it some GPU issues</title>
		<link>https://wadetregaskis.com/macos-10-12-2-appears-to-have-brought-with-it-some-gpu-issues/</link>
					<comments>https://wadetregaskis.com/macos-10-12-2-appears-to-have-brought-with-it-some-gpu-issues/#respond</comments>
		
		<dc:creator><![CDATA[]]></dc:creator>
		<pubDate>Fri, 06 Jan 2017 18:09:09 +0000</pubDate>
				<category><![CDATA[Photography]]></category>
		<category><![CDATA[Bugs!]]></category>
		<category><![CDATA[crashtastic]]></category>
		<category><![CDATA[D500]]></category>
		<category><![CDATA[D7100]]></category>
		<category><![CDATA[Einstein@Home]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Graphics Corruption]]></category>
		<category><![CDATA[macOS]]></category>
		<category><![CDATA[macOS 10.12.2]]></category>
		<category><![CDATA[NEF rendering]]></category>
		<category><![CDATA[Nikon]]></category>
		<category><![CDATA[Quicklook]]></category>
		<guid isPermaLink="false">https://blog.wadetregaskis.com/?p=3826</guid>

					<description><![CDATA[I run Einstein@Home, using both CPU cores &#38; my GPU. &#160;Other than a few month period where Einstein@Home was issuing broken GPU work units, I&#8217;ve been successfully doing this for years, I think. &#160;Longer than I can really remember, in any case. It appears, however, that 10.12.2 has introduced some serious issues impacting those GPU&#8230; <a class="read-more-link" href="https://wadetregaskis.com/macos-10-12-2-appears-to-have-brought-with-it-some-gpu-issues/" data-wpel-link="internal">Read more</a>]]></description>
										<content:encoded><![CDATA[
<p>I run Einstein@Home, using both CPU cores &amp; my GPU. &nbsp;Other than a few month period where Einstein@Home was issuing broken GPU work units, I&#8217;ve been successfully doing this for years, I think. &nbsp;Longer than I can really remember, in any case.</p>



<p>It appears, however, that 10.12.2 has introduced some serious issues impacting those GPU tasks. &nbsp;While there&#8217;s always been occasional issues with performance while running these GPU tasks &#8211; e.g. Amazon streaming video drops frames &#8211; I&#8217;ve not had any major complaints.</p>



<p>Now, however, I have this:</p>


<div class="wp-block-image">
<figure data-wp-context="{&quot;imageId&quot;:&quot;69cf960c2038c&quot;}" data-wp-interactive="core/image" data-wp-key="69cf960c2038c" class="aligncenter size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="5120" height="2880" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1.webp" alt="Screen shot showing massive graphics corruption" class="wp-image-3832" srcset="https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1.webp 5120w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1-512x288@2x.webp 1024w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1-2048x1152.webp 2048w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1-256x144.webp 256w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1-512x288.webp 512w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1-2048x1152@2x.webp 4096w" sizes="auto, (max-width: 5120px) 100vw, 5120px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>
</div>


<p>That&#8217;s what I get when I render a Nikon NEF file, pretty much anywhere in the system.</p>



<p>The exact symptoms of the issue seem to vary depending on where &amp; what type of NEF file I render &#8211; e.g. rendering them in Preview mostly constraints the graphics corruption to Preview, and doesn&#8217;t readily lead to the whole system hanging. &nbsp;Using the Finder for its previews, or Quicklook, however, very quickly leads to massive graphics corruption and, for Nikon D7100 NEFs, quickly hangs the system entirely. &nbsp;Oddly, Nikon D500 NEFs don&#8217;t tend to cause immediate system hangs, but will prevent the system restarting or shutting down &#8211; it ends up hung at a black screen, after seemingly closing the window server, with a very consistent pattern of corruption and a frozen mouse cursor.</p>



<p>I never saw this, or anything like it, prior to the 10.12.2 update. &nbsp;Sigh.</p>



<p>FWIW, the particular work unit in question triggering this right now is:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1406" height="1004" src="https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-9.11.17-am.webp" alt="Screen shot of the Einstein@Home work unit properties dialog" class="wp-image-3835" style="width:703px" srcset="https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-9.11.17-am.webp 1406w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-9.11.17-am-512x366@2x.webp 1024w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-9.11.17-am-256x183.webp 256w, https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-9.11.17-am-512x366.webp 512w" sizes="auto, (max-width: 1406px) 100vw, 1406px" /></figure>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://wadetregaskis.com/macos-10-12-2-appears-to-have-brought-with-it-some-gpu-issues/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			<media:content url="https://wadetregaskis.com/wp-content/uploads/2017/01/Screen-Shot-2017-01-06-at-8.50.31-am-1-2048x1152.webp" medium="image" />
<post-id xmlns="com-wordpress:feed-additions:1">3826</post-id>	</item>
	</channel>
</rss>
