{"id":56450,"date":"2022-07-21T03:01:07","date_gmt":"2022-07-20T17:01:07","guid":{"rendered":"http:\/\/www.rjmprogramming.com.au\/ITblog\/?p=56450"},"modified":"2023-04-20T16:46:49","modified_gmt":"2023-04-20T06:46:49","slug":"webpage-macos-say-audio-commentary-personalization-tutorial","status":"publish","type":"post","link":"https:\/\/www.rjmprogramming.com.au\/ITblog\/webpage-macos-say-audio-commentary-personalization-tutorial\/","title":{"rendered":"Webpage macOS Say Audio Commentary Personalization Tutorial"},"content":{"rendered":"<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/calc_use.htm\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Webpage macOS Say Audio Commentary Personalization Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record_js_voice.jpg\" title=\"Webpage macOS Say Audio Commentary Personalization Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Webpage macOS Say Audio Commentary Personalization Tutorial<\/p><\/div>\n<p>We want more ways for the &#8220;caller HTML&#8221; and the &#8220;external called Javascript&#8221; to co-operate, on top of the quite rigid and limited rules of yesterday&#8217;s <a title='Webpage macOS Say Audio Commentary Tutorial' href='#wossact'>Webpage macOS Say Audio Commentary Tutorial<\/a>, and thought about &#8220;ways to add intelligence&#8221; to HTML.  XML is a bit more towards what we are after.  To make HTML be a bit XML we like &#8230;<\/p>\n<ul>\n<li><a target=_blank href='https:\/\/www.w3schools.com\/tags\/att_global_data.asp' title='Global data attributes information from W3schools'>global data attributes<\/a> is a client side way we like to do this, and we use them both as &#8230;\n<ol>\n<li><i>data-commentary<\/i> global data attribute label used for user to flag commentary directly in the HTML design &#8230; and &#8230;<\/li>\n<li><i>data-foundcommentary<\/i> global data attribute label used for the second way, below, whereby the &#8220;caller HTML&#8221; can co-operate with the &#8220;external called Javascript&#8221;, flagging relevant elements not to repeat audio commentaries<\/li>\n<\/ol>\n<\/li>\n<li>in the local Javascript of the &#8220;caller HTML&#8221; define an array as per &#8230;<br \/>\n<code><br \/>\n&lt;script type='text\/javascript'&gt;<br \/>\n  var commentary_array=['.tbanner', 'Tbanner is class', '.bbanner', 'Bbanner is class'];<br \/>\n&lt;\/script&gt;<br \/>\n<\/code><br \/>\n &#8230; one we wrote for <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/calc_use.html--GETME\" title=\"calc_use.htm\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/calc_use.htm\" title=\"calc_use.html--GETME\">calc_use.htm<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/calc_use.htm\" title=\"calc_use.htm\">example calling web application<\/a>, made up of sets of pairs of a &#8220;CSS selector&#8221; and an &#8220;audio commentary to link to&#8221; and <font color=blue>processed via<\/font> the Javascript &#8230;<br \/>\n<code><br \/>\n <font color=blue>function cmgdafmsr() {<br \/>\n    if (event.target.outerHTML.indexOf(' data-foundcommentary=') &gt; event.target.outerHTML.indexOf('&lt;') && event.target.outerHTML.indexOf(' data-foundcommentary=') &lt; event.target.outerHTML.indexOf('&gt;')) {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say' + encodeURIComponent(minusvmsr) + '%20' + encodeURIComponent(event.target.getAttribute('data-foundcommentary')), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     return true;<br \/>\n   } else if (event.target.outerHTML.indexOf(' data-commentary=') &gt; event.target.outerHTML.indexOf('&lt;') && event.target.outerHTML.indexOf(' data-commentary=') &lt; event.target.outerHTML.indexOf('&gt;')) {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say' + encodeURIComponent(minusvmsr) + '%20' + encodeURIComponent(event.target.getAttribute('data-commentary')), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     return true;<br \/>\n    }<br \/>\n    return false;<br \/>\n }<\/font><br \/>\n<br \/> <br \/>\n function cmfmsr() {<br \/>\n   <font color=blue>if (!cmgdafmsr()) {<\/font><br \/>\n   if (('' + event.target.title) != '') {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say' + encodeURIComponent(minusvmsr) + '%20Title%20is%20' + encodeURIComponent(event.target.title), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     \/\/alert('Title=' + String.fromCharCode(10) + event.target.title);<br \/>\n   } else if (('' + event.target.value).replace(\/^undefined$\/g,'').replace(\/^null$\/g,'') != '') {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say' + encodeURIComponent(minusvmsr) + '%20Value%20is%20' + encodeURIComponent(event.target.value), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     \/\/alert('Value=' + String.fromCharCode(10) + event.target.value);<br \/>\n   } else if (('' + event.target.outerHTML).indexOf('&gt;&lt;') == -1 && ('' + event.target.outerHTML).indexOf('&lt;\/') != -1) {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say' + encodeURIComponent(minusvmsr) + '%20InnerHTML%20is%20' + encodeURIComponent((event.target.innerText || event.target.contentWindow || event.target.contentDocument)), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     \/\/alert('InnerHTML=' + String.fromCharCode(10) + event.target.innerHTML);<br \/>\n   } else {<br \/>\n     console.log('OuterHTML=' + String.fromCharCode(10) + event.target.outerHTML);<br \/>\n   }<br \/>\n   <font color=blue>}<\/font><br \/>\n }<br \/>\n<br \/> <br \/>\n function dostuffmsr() {<br \/>\n   var relstrmsr='', exctheremsr=false;<br \/>\n   var iels=0, jels=0, kels=0;<br \/>\n   var elsare=document.getElementsByTagName('*');<br \/>\n   \/\/commentary_array=['.tbanner', 'Tbanner is class', '.bbanner', 'Bbanner is class'];<br \/>\n   for (iels=0; iels&lt;elsare.length; iels++) {<br \/>\n       \/\/console.log(typeof(commentary_array));<br \/>\n     exctheremsr=false;<br \/>\n     <font color=blue>if (typeof(commentary_array) === 'object') {<br \/>\n       console.log('yes, array');<br \/>\n       for (jels=0; jels&lt;commentary_array.length; jels+=2) {<br \/>\n         if (commentary_array[jels].trim() != '') {<br \/>\n           if (commentary_array[jels].trim().substring(0,1) == '.') {<br \/>\n             relstrmsr='';<br \/>\n             if (elsare[iels].outerHTML.indexOf(' class=\"') &gt; elsare[iels].outerHTML.indexOf('&lt;') && elsare[iels].outerHTML.indexOf(' class=\"') &lt; elsare[iels].outerHTML.indexOf('&gt;')) {<br \/>\n               relstrmsr=' ' + elsare[iels].outerHTML.split(' class=\"')[1].split('\"')[0] + ' ';<br \/>\n             }<br \/>\n             if (relstrmsr.indexOf(' ' + commentary_array[jels].substring(1) + ' ') != -1) {<br \/>\n               elsare[iels].setAttribute('data-foundcommentary', commentary_array[eval(1 + eval('' + jels))]);<br \/>\n               elsare[iels].addEventListener(\"contextmenu\", cmgdafmsr, false);<br \/>\n               exctheremsr=true;<br \/>\n            }<br \/>\n           } else if (commentary_array[jels].trim().substring(0,1) == '#') {<br \/>\n             relstrmsr='';<br \/>\n             if (elsare[iels].outerHTML.indexOf(' id=\"') &gt; elsare[iels].outerHTML.indexOf('&lt;') && elsare[iels].outerHTML.indexOf(' id=\"') &lt; elsare[iels].outerHTML.indexOf('&gt;')) {<br \/>\n               relstrmsr=' ' + elsare[iels].outerHTML.split(' id=\"')[1].split('\"')[0] + ' ';<br \/>\n             }<br \/>\n             if (relstrmsr.indexOf(' ' + commentary_array[jels].substring(1) + ' ') != -1) {<br \/>\n               elsare[iels].setAttribute('data-foundcommentary', commentary_array[eval(1 + eval('' + jels))]);<br \/>\n               elsare[iels].addEventListener(\"contextmenu\", cmgdafmsr, false);<br \/>\n               exctheremsr=true;<br \/>\n             }<br \/>\n           } else {<br \/>\n             relstrmsr='';<br \/>\n             if (elsare[iels].outerHTML.indexOf(commentary_array[jels]) == 1) {<br \/>\n               if (elsare[iels].outerHTML.indexOf(commentary_array[jels] + ' ') == 1) {<br \/>\n                 elsare[iels].setAttribute('data-foundcommentary', commentary_array[eval(1 + eval('' + jels))]);<br \/>\n                 elsare[iels].addEventListener(\"contextmenu\", cmgdafmsr, false);<br \/>\n                 exctheremsr=true;<br \/>\n               } else if (elsare[iels].outerHTML.indexOf(commentary_array[jels] + '&gt;') == 1) {<br \/>\n                 elsare[iels].setAttribute('data-foundcommentary', commentary_array[eval(1 + eval('' + jels))]);<br \/>\n                 elsare[iels].addEventListener(\"contextmenu\", cmgdafmsr, false);<br \/>\n                 exctheremsr=true;<br \/>\n               }<br \/>\n             }<br \/>\n           }<br \/>\n         }<br \/>\n       }<br \/>\n     }<\/font><br \/>\n     if (exctheremsr || (elsare[iels].outerHTML.indexOf(' data-foundcommentary=') &gt; elsare[iels].outerHTML.indexOf('&lt;') && elsare[iels].outerHTML.indexOf(' data-foundcommentary=') &lt; elsare[iels].outerHTML.indexOf('&gt;'))) {<br \/>\n       iels=iels;<br \/>\n     } else if (elsare[iels].outerHTML.indexOf(' data-commentary=') &gt; elsare[iels].outerHTML.indexOf('&lt;') && elsare[iels].outerHTML.indexOf(' data-commentary=') &lt; elsare[iels].outerHTML.indexOf('&gt;')) {<br \/>\n       elsare[iels].addEventListener(\"contextmenu\", cmgdafmsr, false);<br \/>\n     } else {<br \/>\n       elsare[iels].addEventListener(\"contextmenu\", cmfmsr, false);<br \/>\n     }<br \/>\n   }<br \/>\n }<br \/>\n<\/code>\n<\/li>\n<\/ul>\n<p> &#8230; to add a lot more flexibility in user control of &#8220;audio commentary&#8221; content, where the &#8220;say&#8221; voice is now another optional dropdown choice in <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/macos_say_record.js-GETME\">the changed<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.js-GETME\">macos_say_record.js<\/a> external Javascript.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/webpage-macos-say-audio-commentary-personalization-tutorial\/'>Webpage macOS Say Audio Commentary Personalization Tutorial<\/a>.<\/p-->\n<hr>\n<p id='wossact'>Previous relevant <a target=_blank title='Webpage macOS Say Audio Commentary Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/webpage-macos-say-audio-commentary-tutorial\/'>Webpage macOS Say Audio Commentary Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/calc_use.htm\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Webpage macOS Say Audio Commentary Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record_js.jpg\" title=\"Webpage macOS Say Audio Commentary Tutorial\" style=\"float:left;\" \/><\/a><p class=\"wp-caption-text\">Webpage macOS Say Audio Commentary Tutorial<\/p><\/div>\n<p>It&#8217;s been a tweaked PHP web application last talked about at <a title='PHP macOS say Supervisor Modes of Use Tutorial' href='#phpossmut'>PHP macOS say Supervisor Modes of Use Tutorial<\/a>, that, consisting of &#8230;<\/p>\n<ul>\n<li>any public domain (ours being RJM Programming) webpage (and today we&#8217;ve chosen <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/HTMLCSS\/calc_use.htm\" title=\"calc_use.htm\">calc_use.htm<\/a>) that gets added into its &lt;head&gt;&lt;\/head&gt; section the external Javascript call &#8230;<br \/>\n<code><br \/>\n&lt;script type='text\/javascript' src='\/macos_say_record.js'&gt;&lt;\/script&gt;<br \/>\n<\/code>\n<\/li>\n<li>where that (new, today) <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.js_GETME\">macos_say_record.js<\/a> &#8230;<br \/>\n<code><br \/>\n\/\/ macos_say_record.js<br \/>\n\/\/ RJM Programming<br \/>\n\/\/ Help get, to work, MAMP URLs like HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say%20hello%20there<br \/>\n<br \/>\n var wo_ismsr=null;<br \/>\n<br \/>\n function cmfmsr() {<br \/>\n   if (('' + event.target.title) != '') {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say%20Title%20is%20' + encodeURIComponent(event.target.title), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     \/\/alert('Title=' + String.fromCharCode(10) + event.target.title);<br \/>\n   } else if (('' + event.target.value).replace(\/^undefined$\/g,'').replace(\/^null$\/g,'') != '') {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say%20Value%20is%20' + encodeURIComponent(event.target.value), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     \/\/alert('Value=' + String.fromCharCode(10) + event.target.value);<br \/>\n   } else if (('' + event.target.outerHTML).indexOf('&gt;&lt;') == -1 && ('' + event.target.outerHTML).indexOf('&lt;\/') != -1) {<br \/>\n     wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andclose=y&docronwork=say%20InnerHTML%20is%20' + encodeURIComponent((event.target.innerText || event.target.contentWindow || event.target.contentDocument)), 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n     \/\/alert('InnerHTML=' + String.fromCharCode(10) + event.target.innerHTML);<br \/>\n   } else {<br \/>\n     console.log('OuterHTML=' + String.fromCharCode(10) + event.target.outerHTML);<br \/>\n   }<br \/>\n }<br \/>\n<br \/>\n function locopencheck() {<br \/>\n   if (wo_ismsr) {<br \/>\n   \/\/alert(10);<br \/>\n     if (!wo_ismsr.closed) {<br \/>\n       wo_ismsr.close();<br \/>\n       wo_ismsr=null;<br \/>\n       document.getElementById('msrae').title='Click here so that right click or two finger gesture around webpage performs macOS say audio commentary on target HTML elements.';<br \/>\n       document.getElementById('msrae').style.textShadow='-4px 4px 6px #ff2d95;';<br \/>\n       document.getElementById('msrae').style.backgroundColor='lightgreen';<br \/>\n   \/\/alert(110);<br \/>\n     } else {<br \/>\n       wo_ismsr=null;<br \/>\n   \/\/alert(1110);<br \/>\n     }<br \/>\n   \/\/} else {<br \/>\n   \/\/alert(11110);<br \/>\n   }<br \/>\n }<br \/>\n<br \/> <br \/>\n function dostuffmsr() {<br \/>\n   var elsare=document.getElementsByTagName('*');<br \/>\n   for (var iels=0; iels&lt;elsare.length; iels++) {<br \/>\n       elsare[iels].addEventListener(\"contextmenu\", cmfmsr, false);<br \/>\n   }<br \/>\n }<br \/>\n<br \/> <br \/>\n function huhmsr() {<br \/>\n   document.getElementById('msrae').style.display='none';<br \/>\n }<br \/>\n<br \/> <br \/>\n function onlmsr() {<br \/>\n    document.body.innerHTML+=\"&lt;iframe id=ifh name=ifh style=display:none; src='\/\/www.rjmprogramming.com.au\/About_Us.html'&gt;&lt;\/iframe&gt;&lt;a title='Download macos_say_record.php to MAMP Document Root' onclick=dostuffmsr(); style='position:absolute;z-index:5643;opacity:0.5;top:0px;left:0px;background-color:yellow;' id=msrae&gt;&#128172;&lt;\/a&gt;\";<br \/>\n    wo_ismsr=window.open('HTTP:\/\/localhost:8888\/macos_say_record.php?andJUNKclose=y&docronwork=ls', 'ifh', 'top=50,left=50,width=500,height=500'); \/\/'_blank', 'top=50,left=50,width=500,height=500');<br \/>\n    setTimeout(locopencheck, 900);<br \/>\n    setTimeout(huhmsr, 9000);<br \/>\n }<br \/>\n<br \/> <br \/>\n setTimeout(onlmsr, 2000);<br \/>\n<\/code><br \/>\n &#8230; sits in that public domain&#8217;s Document Root &#8230; and &#8230;<\/li>\n<li>looks, in an &#8220;Intranet feeling&#8221; way to see whether you, as an individual user of that public domain webpage have downloaded to a macOS <a target=_blank title='MAMP' href='http:\/\/www.mamp.info'>MAMP<\/a> local Apache\/PHP\/MySql web server Document Root <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/macos_say_record.php----------------------GETME\">tweaked inhouse<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.php----------------------GETME\">macos_say_record.php<\/a> supervisor of macOS <a target=_blank title='say command information from Apple' href='https:\/\/ss64.com\/osx\/say.html'><i>say<\/i><\/a> command<\/li>\n<\/ul>\n<p> &#8230; components to a &#8220;proof of concept&#8221; webpage audio commentary is an &#8220;Intranet feeling&#8221; solution.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/webpage-macos-aay-audio-commentary-tutorial\/'>Webpage macOS Say Audio Commentary Tutorial<\/a>.<\/p-->\n<hr>\n<p id='phpossmut'>Previous relevant <a target=_blank title='PHP macOS say Supervisor Modes of Use Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/php-macos-say-supervisor-modes-of-use-tutorial\/'>PHP macOS say Supervisor Modes of Use Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.php\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"PHP macOS say Supervisor Modes of Use Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record_curl_cmd_nofile.jpg\" title=\"PHP macOS say Supervisor Modes of Use Tutorial\" \/><\/a><p class=\"wp-caption-text\">PHP macOS say Supervisor Modes of Use Tutorial<\/p><\/div>\n<p>After yesterday&#8217;s <a title='Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial' href='#msppssost'>Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/a>, today we turn back to the PHP code that started our foray into &#8220;Siri meets say&#8221; thought patterns.<\/p>\n<p>It seems a bit strange to be talking about macOS and command line &#8220;say&#8221; commands, and not, on top of its &#8230;<\/p>\n<ul>\n<li>usual &#8220;surfing the net&#8221; via the web browser address bar mode of use &#8230; to, today, add &#8230;<\/li>\n<li>a &#8220;command line&#8221; mode of use &#8230; and &#8230;<\/li>\n<li>the <i>manufactured<\/i> feeling &#8220;curl&#8221; mode of use<\/li>\n<\/ul>\n<p> &#8230; to its talents so that &#8220;say&#8221; on the macOS command line can have equivalencies with &#8230;<\/p>\n<p>&lt;?php<br \/>\n<code><br \/>\n if (isset($argv)) { \/\/ command line<br \/>\n  $commandsofar=\"say \";<br \/>\n  $numargs = sizeof($argv);<br \/>\n  if ($numargs > 1) {<br \/>\n   if (PHP_OS == \"Darwin\") {<br \/>\n     for ($ii=1; $ii&lt;$numargs; $ii++) {<br \/>\n      if ($ii == 1 && strtolower($argv[$ii]) == 'say') {<br \/>\n       $commandsofar=\"say \";<br \/>\n      } else {<br \/>\n       $commandsofar.=' ' . $argv[$ii];<br \/>\n      }<br \/>\n     }<br \/>\n     passthru($commandsofar);<br \/>\n     exit;<br \/>\n   }<br \/>\n  } else {<br \/>\n   if (PHP_OS == \"Darwin\") {<br \/>\n     passthru(\"info say\");<br \/>\n     exit;<br \/>\n   }<br \/>\n  }<br \/>\n } else if (isset($_GET['curlit'])) {   \/\/ curl<br \/>\n  $commandsofar=\"say \";<br \/>\n  if (PHP_OS == \"Darwin\") {<br \/>\n    passthru(str_replace(\"say say \",\"say \",\"say \" . str_replace('+',' ',urldecode($_GET['curlit']))));<br \/>\n    exit;<br \/>\n  }<br \/>\n }<br \/>\n<\/code><br \/>\n?&gt;<\/p>\n<ul>\n<li>a &#8220;command line&#8221; mode of use &#8230; where &#8220;say blah-blah-blah&#8221; on a command line can be equivalent to<font size=1>, say,<\/font> &#8220;php .\/macos_say_record.php blah-blah-blah&#8221; &#8230;<\/li>\n<li>the <i>manufactured<\/i> feeling &#8220;curl&#8221; mode of use asks of the user a way to use a command like &#8220;curl &#8216;HTTP:\/\/localhost:8888\/macos_say_record.php?curlit=<i>blah-blah-blah<\/i>&#8216;&#8221; (where <i>blah-blah-blah<\/i> = encodeURIComponent(blah-blah-blah))<\/li>\n<\/ul>\n<p>We also increased &#8220;say&#8221; functionality by not forcing &#8230;<\/p>\n<ul>\n<li>the default output, for &#8220;say&#8221; use, of creating an audio file &#8230; and, as of today, adding that, as an alternative &#8230;<\/li>\n<li>if the audio file is set to blank by the user the <font color=blue>&#8220;say&#8221; operating system command<\/font> is performed behind the scenes &#8230;<br \/>\n&lt;?php<br \/>\n<code><br \/>\n  <font color=blue>if (str_replace(\"+\",\" \",urldecode($_GET['audioname'])) == \"\") {<br \/>\n  <a target=_blank title='PHP passthru information' href='https:\/\/www.php.net\/manual\/en\/function.passthru.php'>passthru<\/a>(\"say\" . $sayprefix . \" \" . str_replace(\"\\n\",\",,,,,,\",$thewords) . \" &gt; \" . dirname(__FILE__) . \"\/sayout.out\" . \" 2&gt; \" . dirname(__FILE__) . \"\/sayerr.err\");<br \/>\n  exit;<br \/>\n  } else {<\/font><br \/>\n  exec(\"say\" . $sayprefix . \" -o \" . dirname(__FILE__) . \"\/\" . str_replace(\"+\",\" \",urldecode($_GET['audioname'])) . \" \" . str_replace(\"\\n\",\",,,,,,\",$thewords) . \" &gt; \" . dirname(__FILE__) . \"\/sayout.out\" . \" 2&gt; \" . dirname(__FILE__) . \"\/sayerr.err\");<br \/>\n  <font color=blue>}<\/font><br \/>\n<\/code><br \/>\n?&gt;<br \/>\n &#8230; getting us to moderate that &#8220;audiofile&#8221; textbox functionality <font color=blue>this way<\/font> &#8230;<br \/>\n&lt;?php<br \/>\n<code><br \/>\n<font color=blue>$audioft=\"\";<br \/>\nif (PHP_OS == \"Darwin\") {<br \/>\n  $audioft=' title=\"This made to be blank and the topmost say dropdown choice will cause the text to audio to play through your speakers.\" onblur=\"if (this.value.trim().length == 0 && document.getElementById(' . \"'\" . 'saymode' . \"'\" . ').value.length == 0) {  document.getElementById(' . \"'\" . 'saysub' . \"'\" . ').value=document.getElementById(' . \"'\" . 'saysub' . \"'\" . ').value.replace(' . \"'\" . 'Record ' . \"'\" . ',' . \"'\" . 'Say ' . \"'\" . ');  } else if (this.value.trim().length != 0 && document.getElementById(' . \"'\" . 'saymode' . \"'\" . ').value.length == 0) {  document.getElementById(' . \"'\" . 'saysub' . \"'\" . ').value=document.getElementById(' . \"'\" . 'saysub' . \"'\" . ').value.replace(' . \"'\" . 'Say ' . \"'\" . ',' . \"'\" . 'Record ' . \"'\" . ');  }\"';<br \/>\n}<\/font><br \/>\n<\/code><br \/>\n?&gt;<br \/>\n &#8230; working with &#8230;<br \/>\n &lt;?php echo &#8221;<br \/>\n<code><br \/>\n&lt;input type=text name=audioname id=audioname value='audiocapture.\" . $bestext . \"'<font color=blue>\" . $audioft . \"<\/font>&gt;&lt;\/input&gt;<br \/>\n<\/code><br \/>\n&#8220;; ?&gt;\n<\/li>\n<\/ul>\n<p> &#8230; to improve the user experience for those curious macOS (perhaps MAMP) local web server users of <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/macos_say_record.php---------------------GETME\">our changed inhouse<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.php---------------------GETME\">macos_say_record.php<\/a> <font size=1>(we recommend you download to macOS <a target=_blank title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info'>MAMP<\/a> local web server and startup via <i>HTTP:\/\/localhost:8888\/macos_say_record.php<\/i> web address URL)<\/font> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.php\" title=\"Click picture\">MacOS Text to Audio online PHP supervisor<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/php-macos-say-supervisor-modes-of-use-tutorial\/'>PHP macOS say Supervisor Modes of Use Tutorial<\/a>.<\/p-->\n<hr>\n<p id='msppssost'>Previous relevant <a target=_blank title='Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/making-of-siri-on-iphone-plays-spotify-song-via-macos-say-tutorial\/'>Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/Siri_via_say_onto_iPhone.mp4\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/making_of_Siri_via_say_onto_iPhone.gif\" title=\"Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial\" \/><\/a><p class=\"wp-caption-text\">Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/p><\/div>\n<p>Making yesterday&#8217;s <a title='Siri on iPhone Plays Spotify Song via macOS say Tutorial' href='#sppssost'>Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/a>&#8216;s <a href='#siriv'>video<\/a> involved three devices &#8230;<\/p>\n<ol>\n<li>this MacBook Air (using &#8220;say&#8221; commands) &#8230; and &#8230;<\/li>\n<li>an iPhone with Siri and Spotify &#8230; but, also &#8230;<\/li>\n<li>a Windows 10 laptop helped contextualize &#8230; via &#8230;<\/li>\n<\/ol>\n<p> &#8230; use of &#8230;<\/p>\n<ul>\n<li>Windows 10 <a target=_blank title='Windows 10 Camera app' href='https:\/\/www.online-tech-tips.com\/windows-10\/how-to-use-windows-10-camera-app\/'>Camera<\/a> app &#8230; photographing the slide contents of yesterday&#8217;s video presentation<\/li>\n<li>Windows 10 <a target=_blank title='Windows 10 Photos app information from Microsoft' href='https:\/\/support.microsoft.com\/en-us\/windows\/see-all-your-photos-c0c6422f-d4cb-2e3d-eb65-7069071b2f9b'>Photos<\/a> app &#8230; turning the slides above into yesterday&#8217;s video presentation &#8230; along with its Share option Mail to email off and sftp into place<\/li>\n<\/ul>\n<p> &#8230; some steps of which you can see with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/making_of_Siri_via_say_onto_iPhone.gif\" title=\"Tutorial picture\">today&#8217;s animated GIF tutorial picture<\/a>.<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/making-of-siri-on-iphone-plays-spotify-song-via-macos-say-tutorial\/'>Making of Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/a>.<\/p-->\n<hr>\n<p id='sppssost'>Previous relevant <a target=_blank title='Siri on iPhone Plays Spotify Song via macOS say Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/siri-on-iphone-plays-spotify-song-via-macos-say-tutorial\/'>Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/Siri_via_say_onto_iPhone.mp4\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Siri on iPhone Plays Spotify Song via macOS say Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/Siri_via_say_onto_iPhone.jpg\" title=\"Siri on iPhone Plays Spotify Song via macOS say Tutorial\" \/><\/a><p class=\"wp-caption-text\">Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/p><\/div>\n<p>Yesterday&#8217;s <a title='Siri on iPad Plays Apple Music Song Tutorial' href='#sppamst'>Siri on iPad Plays Apple Music Song Tutorial<\/a> represented to us, regarding the &#8230;<\/p>\n<blockquote cite='https:\/\/www.google.com\/search?q=Do+not+be+concerned%2C+It+will+not+harm+you%2C+it%27s&#038;rlz=1C5CHFA_enAU973AU973&#038;sxsrf=APq-WBvEuFAK5Okrn_zb3x-H2QptgCLiTw%3A1644037403235&#038;ei=GwX-YdHNDbSxmge02LboDw&#038;ved=0ahUKEwiRx6rL5Of1AhW0mOYKHTSsDf0Q4dUDCA4&#038;uact=5&#038;oq=Do+not+be+concerned%2C+It+will+not+harm+you%2C+it%27s&#038;gs_lcp=Cgdnd3Mtd2l6EAM6BwgAEEcQsAM6BAgjECc6BQghEKABOgQIIRAVSgQIQRgASgQIRhgAUIkJWJYUYLEdaAFwAngAgAH4AYgBgAmSAQUwLjUuMZgBAKABAcgBCMABAQ&#038;sclient=gws-wiz'><p>\nDon&#8217;t be concerned, it will not harm you<br \/>\nIt&#8217;s only me pursuing somethin&#8217; I&#8217;m not sure of<br \/>\nAcross my dreams with nets of wonder<br \/>\nI chase the bright elusive butterfly of love\n<\/p><\/blockquote>\n<p> &#8230; <a target=_blank href='https:\/\/www.google.com\/search?q=Do+not+be+concerned%2C+It+will+not+harm+you%2C+it%27s&#038;rlz=1C5CHFA_enAU973AU973&#038;sxsrf=APq-WBvEuFAK5Okrn_zb3x-H2QptgCLiTw%3A1644037403235&#038;ei=GwX-YdHNDbSxmge02LboDw&#038;ved=0ahUKEwiRx6rL5Of1AhW0mOYKHTSsDf0Q4dUDCA4&#038;uact=5&#038;oq=Do+not+be+concerned%2C+It+will+not+harm+you%2C+it%27s&#038;gs_lcp=Cgdnd3Mtd2l6EAM6BwgAEEcQsAM6BAgjECc6BQghEKABOgQIIRAVSgQIQRgASgQIRhgAUIkJWJYUYLEdaAFwAngAgAH4AYgBgAmSAQUwLjUuMZgBAKABAcgBCMABAQ&#038;sclient=gws-wiz' title='Elusive Butterfly ... Song by Bob Lind'>ilk<\/a> of things, a creeping up on our interest in a programmable link between &#8230;<\/p>\n<table style=\"width:100%;\" border=20>\n<tr>\n<th>iOS music playing (<a target=_blank href='https:\/\/music.apple.com\/us\/browse'>Apple Music<\/a> or <a target=_blank title='Spotify' href='https:\/\/www.spotify.com\/'>Spotify<\/a> etcetera)<\/th>\n<th> &#8230; and <a target=_blank href=\"http:\/\/www.apple.com\/au\/ios\/siri\/\" title='Siri information from Apple'>Siri<\/a> &#8230;<\/th>\n<th> &#8230; along with &#8230; <\/th>\n<th>macOS <a target=_blank title='say command information from Apple' href='https:\/\/ss64.com\/osx\/say.html'><i>say<\/i><\/a> (via <a target=_blank title='crontab information from computerhope ... thanks' href='http:\/\/www.computerhope.com\/jargon\/c\/cron.htm'><i>crontab<\/i><\/a> or <a target=_blank title='at information' href='https:\/\/developercoach.com\/using-at-for-command-scheduling-under-mac-os-x\/'><i>at<\/i><\/a> (macOS command scheduling functionality), eventually) control<\/th>\n<\/tr>\n<\/table>\n<p>And our verdict, after today&#8217;s iPhone Siri setup (which gets you to <font color=blue>&#8220;say&#8221;<\/font>, modelling &#8230;<\/p>\n<table border=40>\n<tr>\n<td><font color=blue>say <\/font>&#8220;Hey Siri&#8221;<\/td>\n<\/tr>\n<tr>\n<td><font color=blue>say <\/font>&#8220;Hey Siri, send a message&#8221;<\/td>\n<\/tr>\n<tr>\n<td><font color=blue>say <\/font>&#8220;Hey Siri, how&#8217;s the weather today&#8221;<\/td>\n<\/tr>\n<tr>\n<td><font color=blue>say <\/font>&#8220;Hey Siri, set a timer for three minutes&#8221;<\/td>\n<\/tr>\n<tr>\n<td><font color=blue>say <\/font>&#8220;Hey Siri, play some music&#8221;<\/td>\n<\/tr>\n<\/table>\n<p> &#8230; sentences above to configure the relevant voice) along with a macOS command line &#8220;say&#8221; arrangement, is &#8230; <font size=2>da, da da da da da, da, da da <\/font><font size=1>we could go on with the whole lion bit, but we&#8217;ll spare you<\/font> &#8230; yes, we can get <font color=blue>&#8220;say&#8221; command<\/font> on macOS work a &#8230;<\/p>\n<table>\n<tr>\n<th>\n<blockquote><p>\nHey Siri, Play U2\n<\/p><\/blockquote>\n<\/th>\n<th><font color=blue>say &#8220;Hey Siri, Play U2&#8221;<\/font><\/th>\n<\/tr>\n<\/table>\n<p> &#8230; type of Siri dictation command onto (our) iPhone&#8217;s (default Spotify) music app to play a song.  It&#8217;s just that &#8230; <font size=1>first wooooorrrrlllldddd problem alert<\/font> &#8230; the &#8220;say&#8221; command was not that flash at &#8230;<\/p>\n<table>\n<tr>\n<th>\n<blockquote><p>\nHey Siri, Stop\n<\/p><\/blockquote>\n<\/th>\n<th><font color=blue>say &#8220;Hey Siri, Stop&#8221;<\/font><\/th>\n<\/tr>\n<\/table>\n<p> &#8230; to stop the music, as well as our own &#8230; <font size=1>yoo hoo<\/font> &#8230; voice is.  And so, our recommendation is to setup Siri for multiple voices.  How?  Hard to believe, but it seems, in iPhone&#8217;s <i>Settings -&gt; Siri &amp; Search<\/i> screen, turning the top green (<i>Listen for &#8220;Hey Siri&#8221;<\/i>) switch in the settings to off and then back on is the go?!   The resultant procedure is where you can &#8220;train&#8221; Siri to recognize a macOS &#8220;say&#8221; voice, as well as your own voice, or a bunch of other &#8220;Siri Voice&#8221; (menu) choices offered &#8220;out of the box&#8221; with the iPhone iOS installed.  It may be that you should explore macOS &#8220;say&#8221; <i>-v [VoiceName]<\/i> choices, as well, here.<\/p>\n<p>How does this work sit with macOS crontab &#8220;say&#8221; command thinking that goes with <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/PHP\/Geographicals\/diff.php?one=http:\/\/www.rjmprogramming.com.au\/macos_say_record.php--------------------GETME\">our changed inhouse<\/a> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.php--------------------GETME\">macos_say_record.php<\/a> <font size=1>(we recommend you download to macOS <a target=_blank title='MAMP for Apache\/PHP\/MySql on Mac OS X local web server' href='http:\/\/www.mamp.info'>MAMP<\/a> local web server and startup via <i>HTTP:\/\/localhost:8888\/macos_say_record.php<\/i> web address URL)<\/font> <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/macos_say_record.php\" title=\"Click picture\">MacOS Text to Audio online PHP supervisor<\/a> talked about with <a target=_blank href='https:\/\/www.rjmprogramming.com.au\/ITblog\/macos-text-to-audio-scheduling-tutorial' title='MacOS Text to Audio Scheduling Tutorial'>MacOS Text to Audio Scheduling Tutorial<\/a>?  Well, without reliable &#8220;stop&#8221; &#8230; <font size=1>first wooooorrrrlllldddd problem or not<\/font> &#8230; we are going to continue research, but we&#8217;re not sure that you will be totally spared from your own voice interventions for stopping (of music) purposes &#8230; or perhaps get yourselves an <a target=_blank href='https:\/\/www.apple.com\/au\/homepod-mini\/?afid=p238%7CsynIoQpiP-dc_mtid_18707vxu38484_pcrid_571521245897_pgrid_112846614182_&#038;cid=aos-au-kwgo-btb--slid---product-' title='Apple HomePod mini information'>Apple HomePod mini<\/a> &#8230;<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/Siri_via_say_onto_iPhone.gif\" style=\"width:100%;\"><\/img><\/p>\n<p> &#8230; as a <i>hardware style of thinking solution<\/i>.  Anyway, take a look at <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/Siri_via_say_onto_iPhone.mp4\">today&#8217;s iPhone Siri meets macOS &#8220;say&#8221; control of iPhone Spotify learning curve<\/a> hereabouts &#8230;<\/p>\n<p><video id=siriv controls style=\"width:100%;\"><source type=\"video\/mp4\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPhone\/Siri_via_say_onto_iPhone.mp4\"><\/source><\/video><\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/siri-on-iphone-plays-spotify-song-via-macos-say-tutorial\/'>Siri on iPhone Plays Spotify Song via macOS say Tutorial<\/a>.<\/p-->\n<hr>\n<p id='sppamst'>Previous relevant <a target=_blank title='Siri on iPad Plays Apple Music Song Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/siri-on-ipad-plays-apple-music-song-tutorial\/'>Siri on iPad Plays Apple Music Song Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_plays_apple_music_song.gif\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Siri on iPad Plays Apple Music Song Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_plays_apple_music_song.gif\" title=\"Siri on iPad Plays Apple Music Song Tutorial\" \/><\/a><p class=\"wp-caption-text\">Siri on iPad Plays Apple Music Song Tutorial<\/p><\/div>\n<p>We&#8217;re resetting the iOS <a target=_blank href=\"http:\/\/www.apple.com\/au\/ios\/siri\/\" title='Siri information from Apple'>Siri<\/a> app mentioned in <a title='Siri on iPad Mail Dictate Tutorial' href='#spmdt'>Siri on iPad Mail Dictate Tutorial<\/a> on another iPad today.  We wanted to set it up (via Settings -&gt; Siri &amp; Search) to play songs on <a target=_blank href='https:\/\/music.apple.com\/us\/browse'>Apple Music<\/a> with spoken words (directed to Siri) such as &#8230;<\/p>\n<blockquote cite='\/\/www.rjmprogramming.com.au\/ITblog\/macos-text-to-audio-scheduling-tutorial\/'><p>\n<a target=_blank href='\/\/www.rjmprogramming.com.au\/ITblog\/macos-text-to-audio-scheduling-tutorial\/'>Hey Siri, Play Brahms<\/a>\n<\/p><\/blockquote>\n<p> &#8230; but as you can see from <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_plays_apple_music_song.gif\" title=\"Click picture\">today&#8217;s tutorial animated GIF picture (also showing Siri&#8217;s setup)<\/a> we had no Brahms in our Apple Music collection, and so tried &#8230;<\/p>\n<blockquote><p>\nHey Siri, Play U2\n<\/p><\/blockquote>\n<p> &#8230; with more success!<\/p>\n<p><!--p>You can also see this play out at WordPress 4.1.1's <a target=_blank  href='\/\/www.rjmprogramming.com.au\/ITblog\/siri-on-ipad-plays-apple-music-song-tutorial\/'>Siri on iPad Plays Apple Music Song Tutorial<\/a>.<\/p-->\n<hr>\n<p id='spmdt'>Previous relevant <a target=_blank title='Siri on iPad Mail Dictate Tutorial' href='\/\/www.rjmprogramming.com.au\/ITblog\/siri-on-ipad-mail-dictate-tutorial\/'>Siri on iPad Mail Dictate Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_dictation.pdf\"><img decoding=\"async\" style=\"float:left; border: 15px solid pink;\" alt=\"Siri on iPad Mail Dictate Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_dictation.jpg\" title=\"Siri on iPad Mail Dictate Tutorial\" \/><\/a><p class=\"wp-caption-text\">Siri on iPad Mail Dictate Tutorial<\/p><\/div>\n<p>Hope you are not like me and feel like going into a cupboard to use a microphone on a mobile device.   If this is not you, and you have a half recent version of iOS on an iPad or iPhone, and you have Siri available as an app, then today&#8217;s tutorial may be of interest.\n<\/p>\n<p>Siri can be like a personal assistant, and the way we best think of it as such, is as a tool to help dictate an email, using the Mail app on our iPad.  To get to that, though, if you&#8217;ve never used <a target=_blank href=\"http:\/\/www.apple.com\/au\/ios\/siri\/\" title='Siri information from Apple'>Siri<\/a> before, you should consult this Apple webpage, or our previous <a title='Apple iOS Siri Audio Commentary Tutorial' href='#aisact'>Apple iOS Siri Audio Commentary Tutorial<\/a> to get started.  Once you&#8217;re setup for Siri in this way it is very easy to start using Siri when composing emails.\n<\/p>\n<ul>\n<li>Open the Mail app<\/li>\n<li>Fill in the To field via the keyboard &#8230; Siri can&#8217;t do this very well &#8230; but while you are at the keyboard, what&#8217;s the third button from the left on the bottom row?  Yes, the &#8220;microphone&#8221; button gets you to Siri functionality &#8230; cute, huh?!<\/li>\n<li>Guess we don&#8217;t need to say, but will, that this microphone button becomes useful as soon as you tap in a &#8220;keyboard&#8221; anything &#8230; Siri can be there to assist &#8230; personally!<\/li>\n<\/ul>\n<p>But a word of caution here, is to check about homonyms like today&#8217;s &#8220;in all innocence&#8221; &#8230;\n<\/p>\n<p><code><br \/>\nThe rain in Spain falls mainly on the plane<br \/>\n<\/code><\/p>\n<p> &#8230; Siri faux pas.  This is a small concern compared to how much it can do that is correct.  Hands free dictation can be very useful for those users on the go, or those kinaesthetic thinkers, perhaps.<\/p>\n<p>On the iPad latest iOS, which we&#8217;ll have to talk about soon, there are other good suggestions for Siri use to add to &#8230;<\/p>\n<ul>\n<li>Mail (app) &#8230; those being &#8230;<\/li>\n<li>Safari<\/li>\n<li>Photos<\/li>\n<li>Camera<\/li>\n<li>Settings &#8230; and <\/li>\n<li>Numerous Third Party and homegrown apps that access the keyboard, and so, Siri &#8220;microphone&#8221;<\/li>\n<\/ul>\n<p>Hope this is food for thought, and we&#8217;ll leave you with today&#8217;s PDF presentation of a Mail app session using Siri to help build up the body section email content, <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_dictation.pdf\" title='Click picture'>here<\/a>.<\/p>\n<hr>\n<p id='aisact'>Previous relevant <a target=_blank title='Apple iOS Siri Audio Commentary Tutorial' href='http:\/\/www.rjmprogramming.com.au\/Apple iOS Siri Audio Commentary Tutorial\/'>Apple iOS Siri Audio Commentary Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup_with_audio.html\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Apple iOS Siri Audio Commentary Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_audio.jpg\" title=\"Apple iOS Siri Audio Commentary Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">Apple iOS Siri Audio Commentary Tutorial (click\/touch to open and then hover, click\/touch will have audio commentary)<\/p><\/div>\n<p>Today we wanted to show you an idea inspired by our own previous <a title='Apple iOS Siri Primer Tutorial' href='#aispt'>Apple iOS Siri Primer Tutorial<\/a> that combines &#8230;<\/p>\n<ul>\n<li>One (tutorial picture) image made up of a 3 x 3 set of &#8220;subimages&#8221; &#8230; that has the &#8220;intelligence&#8221; of a &#8230;<\/li>\n<li>HTML <a target=_blank title='HTML map element information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tag_map.asp'>map<\/a> element and the great <a target=_blank title='Mobilefish Image map Creator functionality ... thanks' href='http:\/\/www.mobilefish.com\/services\/image_map\/image_map.php'>Mobilefish &#8220;create your own image map&#8221; functionality<\/a> website &#8230; added to it along with &#8230;<\/li>\n<li>HTML <a target=_blank title='HTML audio element information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tag_audio.asp'>audio<\/a> elements that allow for an audio commentary of the 9 &#8220;subimages&#8221; &#8230; the content for which is derived on a Mac OS X by <a target=_blank title='QuickTime Player' href='https:\/\/support.apple.com\/downloads\/quicktime'>QuickTime Player<\/a>&#8216;s Audio Recording functionality, which we last talked about at this blog with <a target=_blank title='QuickTime Player Video Flickr Share Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/quicktime-player-video-flickr-share-primer-tutorial\/'>QuickTime Player Video Flickr Share Primer Tutorial<\/a><\/li>\n<\/ul>\n<p> &#8230; especially as <a target=_blank href=\"http:\/\/www.apple.com\/au\/ios\/siri\/\" title='Siri information from Apple'>Siri<\/a> so much relates to audio and <a target=_blank title='Voice recognition or speech recognition information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Speech_recognition'>&#8220;voice recognition&#8221;<\/a>.<\/p>\n<p>Now that idea&#8217;s first, second and everything aside from &#8216;HTML audio elements that allow for an audio commentary of the 9 &#8220;subimages&#8221;&#8216; of the third parts we&#8217;ve been consistent on, but the idea to do this in the first place was secondly inspired by reading this <a target=_blank title='Interesting link from w3schools' href='http:\/\/www.w3schools.com\/cssref\/pr_gen_content.asp'>interesting link<\/a> referring to the CSS selectors <a target=_blank title='CSS :before selector information from w3schools' href='http:\/\/www.w3schools.com\/cssref\/sel_before.asp'>:before<\/a> and <a target=_blank title='CSS :after selector information from w3schools' href='http:\/\/www.w3schools.com\/cssref\/sel_after.asp'>:after<\/a> use of the <a target=_blank title='CSS content property information from w3schools' href='http:\/\/www.w3schools.com\/cssref\/pr_gen_content.asp'>content<\/a> property, especially where it says &#8230;<\/p>\n<blockquote cite=\"http:\/\/www.w3schools.com\/cssref\/pr_gen_content.asp\"><p>\nurl(url) \tSets the content to be some kind of media (an image, <b>a sound<\/b>, <b>a video<\/b>, etc.)\n<\/p><\/blockquote>\n<p> &#8230; not quite believing <b>it<\/b> could be true &#8230; yes, an image, but &#8220;<b>a sound<\/b>, <b>a video<\/b>&#8220;?  No way!  Well, alas, as of this date, yes &#8230; no way &#8230; yet.  Then seeing this CSS approach wasn&#8217;t working &#8230; lo and behold &#8230; <a target=_blank title='Useful link' href='http:\/\/stackoverflow.com\/questions\/36359902\/sound-on-pseudoelements-using-css'>this link<\/a> explains more &#8230; thanks.<\/p>\n<p>But this setback is not the end of the world, and the other backup plan of &#8230;<\/p>\n<ul>\n<li>HTML <a target=_blank title='HTML area element information from w3schools' href='http:\/\/www.w3schools.com\/tags\/tag_area.asp'>area<\/a> elements of the HTML map element will be given <a target=_blank title='Onmouseover (hover) event information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/event_onmouseover.asp'><i>onmouseover<\/i><\/a> and <a target=_blank title='Onclick event information from w3schools' href='http:\/\/www.w3schools.com\/jsref\/event_onclick.asp'><i>onclick<\/i><\/a> event logic added to it while using the Mobilefish online map creator &#8230; and we&#8217;ll massage the resultant HTML to put this logic in as well as the HTML audio element &#8220;shells&#8221; as well as &#8230;<\/li>\n<li>Define audio file comma separated lists in the HTML area elements&#8217; <a target=_blank title='HTML area tag alt attribute information from w3schools' href='http:\/\/www.w3schools.com\/tags\/att_area_alt.asp'><i>alt<\/i><\/a> attributes<\/li>\n<\/ul>\n<p> &#8230; involves this Javascript DOM code to make the audio commentary be controlled by a hover (but not on mobile devices) and\/or click\/touch of a &#8220;subimage&#8221; of interest from the main image &#8230;<\/p>\n<p><code><br \/>\n&lt;script type='text\/javascript'&gt;<br \/>\n<b><\/b><br \/>\nvar lastomo='';<br \/>\nvar lastoc='';<br \/>\nvar e, prebits, bits, i;<br \/>\n<b><\/b><br \/>\nfunction omo(ois) {<br \/>\n  if (lastomo != (\"\" + ois.title)) {<br \/>\n   if (ois.alt.indexOf('.') != -1) {<br \/>\n    prebits=ois.alt.split(',');<br \/>\n    for (i=1; i&lt;=prebits.length; i++) {<br \/>\n    bits=prebits[i - 1].split('.');<br \/>\n    document.getElementById('iaudio' + i).type=\"audio\/\" + bits[1].replace('mp3','mpeg');<br \/>\n    document.getElementById('iaudio' + i).src=prebits[i - 1];<br \/>\n    try {<br \/>\n    document.getElementById('iaudio' + i).play();<br \/>\n    } catch (e) {<br \/>\n    document.title=('problem');<br \/>\n    }<br \/>\n    }<br \/>\n   }<br \/>\n  }<br \/>\n  lastomo=\"\" + ois.title;<br \/>\n}<br \/>\n<b><\/b><br \/>\nfunction oc(ois) {<br \/>\n  if (lastoc != (\"\" + ois.title)) {<br \/>\n   if (ois.alt.indexOf('.') != -1) {<br \/>\n    prebits=ois.alt.split(',');<br \/>\n    for (i=1; i&lt;=prebits.length; i++) {<br \/>\n    bits=prebits[i - 1].split('.');<br \/>\n    document.getElementById('iaudio' + i).type=\"audio\/\" + bits[1].replace('mp3','mpeg');<br \/>\n    document.getElementById('iaudio' + i).src=prebits[i - 1];<br \/>\n    try {<br \/>\n    document.getElementById('iaudio' + i).play();<br \/>\n    } catch (e) {<br \/>\n    document.title=('problem');<br \/>\n    }<br \/>\n    }<br \/>\n   }<br \/>\n  }<br \/>\n  lastoc=\"\" + ois.title;<br \/>\n}<br \/>\n<b><\/b><br \/>\n&lt;\/script&gt;<br \/>\n<\/code><\/p>\n<p>You&#8217;ll see a reminder of the first CSS plan where we have &#8230;<\/p>\n<p><code><br \/>\n&lt;style&gt;<br \/>\n.screenshot_1::before {<br \/>\n  content: url('slide1.m4a');<br \/>\n}<br \/>\n&lt;\/style&gt;<br \/>\n<\/code><\/p>\n<p> &#8230; because you never know what the future holds?!<\/p>\n<p>Please try our <a target=_blank title='Click picture (click\/touch to open and then hover, click\/touch will have audio commentary)' href='http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup_with_audio.html'>live run<\/a> and\/or peruse or download the HTML and Javascript and &#8220;not now&#8221; CSS you could call <a target=_blank title='siri_setup_with_audio.html' href='http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup_with_audio.html_GETME'>siri_setup_with_audio.html<\/a><\/p>\n<hr>\n<p id='aispt'>Previous relevant <a target=_blank title='Apple iOS Siri Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/apple-ios-siri-primer-tutorial\/'>Apple iOS Siri Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Apple iOS Siri Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup.jpg\" title=\"Apple iOS Siri Primer Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">Apple iOS Siri Primer Tutorial<\/p><\/div>\n<p>After the tutorial two days back, with Windows 10 and its Cortana voice recognition &#8220;personal assistant&#8221; (that we tested out with <a title='Windows 10 Cortana Primer Tutorial' href='#w10cpt'>Windows 10 Cortana Primer Tutorial<\/a> below) you&#8217;d be wondering if Apple has an equivalent, and yes, for iOS, which we are going to show today on an iPad, and there are &#8220;kind of&#8221; ways for Mac OS X El Capitan you can read about <a target=_blank title='Useful link' href='http:\/\/fieldguide.gizmodo.com\/how-to-get-siri-on-os-x-el-capitan-kind-of-1742285613'>here<\/a>.<\/p>\n<p>Let&#8217;s see how Apple describes <a target=_blank href=\"http:\/\/www.apple.com\/au\/ios\/siri\/\" title='Siri information from Apple'>Siri<\/a> this way &#8230;<\/p>\n<blockquote cite=\"http:\/\/www.apple.com\/au\/ios\/siri\/\"><p>\nSiri lets you use your voice to send messages, schedule meetings, place phone calls and more. Ask Siri to do things just by talking the way you talk. Siri understands what you say, knows what you mean and even talks back. Siri is so easy to use and does so much, you\u2019ll keep finding more and more ways to use it.\n<\/p><\/blockquote>\n<p>This being an iPad, and this being iOS, we had no issues with microphones setting up Siri.  The microphone is well integrated into iPad normal usage, and the main job for today&#8217;s iPad Siri setup that you get to via &#8230;<\/p>\n<p><code><br \/>\nSettings -&gt; General -&gt; Siri<br \/>\n<\/code><\/p>\n<p> &#8230; relates to <a target=_blank title='Voice recognition or speech recognition information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Speech_recognition'>&#8220;voice recognition&#8221;<\/a> &#8230; and which we feature some of the steps involved, with today&#8217;s <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Mac\/iPad\/siri_setup.jpg\" title='Click picture'>tutorial picture<\/a>.<\/p>\n<hr>\n<p id='w10cpt'>Previous relevant <a target=_blank title='Windows 10 Cortana Primer Tutorial' href='http:\/\/www.rjmprogramming.vcom.au\/ITblog\/windows-10-cortana-primer-tutorial\/'>Windows 10 Cortana Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/Windows\/cortana_listen.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"Windows 10 Cortana Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/Windows\/cortana_listen.jpg\" title=\"Windows 10 Cortana Primer Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">Windows 10 Cortana Primer Tutorial<\/p><\/div>\n<p>In the area of <a target=_blank title='Robotics information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Robotics'>robotics<\/a> and <a target=_blank title='Artificial intelligence information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Artificial_intelligence'>artificial intelligence<\/a>, perhaps the best known concept to we &#8220;mere mortals&#8221; is <a target=_blank title='Voice recognition or speech recognition information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/Speech_recognition'>&#8220;voice recognition&#8221;<\/a>.  Perhaps because research into it goes back to 1932, before the Second World War &#8230; <font size=1>and 66 years before the &#8220;Worm Farm Incident of Simmons Street Disaster&#8221; &#8230; but we digress &#8230; and no &#8230; &#8220;I&#8217;m not ready to open up about this at this delicate stage of my life, yet, Brad.&#8221;<\/font>.<\/p>\n<p>Voice recognition has come a long way from those earliest endeavours when the speech recognition relied on training software for an individual voice.  This became apparent to me trying out Cortana in Windows 10.  Once working, it didn&#8217;t seem to matter who in our house asked the same question of <a target=_blank title='Cortana information from Microsoft' href='https:\/\/support.microsoft.com\/en-au\/help\/17214\/windows-10-what-is-cortana'>Cortana<\/a>, the speech recognition software recognized and translated the speech into the same text for all of us.  Actually, Microsoft describes Cortana this way &#8230;<\/p>\n<blockquote cite=\"https:\/\/support.microsoft.com\/en-au\/help\/17214\/windows-10-what-is-cortana\"><p>\n Cortana is your clever new personal assistant.<\/p>\n<p>Cortana will help you find things on your PC, manage your calendar, track packages, find files, chat with you, and tell jokes. The more you use Cortana, the more personalized your experience will be.<\/p>\n<p>To get started, type a question in the search box on the taskbar. Or select the microphone icon and talk to Cortana. (Typing works for all types of PCs, but you need a mic to talk.)\n<\/p><\/blockquote>\n<p> &#8230; and I see what they mean by this, because you can work Cortana without the voice recognition part, if you like, or if you have the urge to run for the nearest cupboard before being caught talking into a computer (microphone).  Perhaps Cortana should have a special &#8220;Darkroom Edition&#8221; for people who &#8230;<\/p>\n<ol>\n<li>have the urge to run for the nearest cupboard before being caught talking into a computer (microphone) &#8230; and who &#8230;<\/li>\n<li>have a hobby developing and printing photographs<\/li>\n<\/ol>\n<p>Anyway, we agree with Microsoft that Cortana is clever, and it&#8217;s nice for us to find another use for the microphone (brand called <a target=_blank title='MXL Tempo microphone' href='http:\/\/www.mxlmics.com\/microphones\/usb\/Tempo\/'>MXL Tempo<\/a>) we used with WebEx work we talked about with <a target=_blank title='WebEx Presentation with Microphone Tutorial' href='#wpwmt'>WebEx Presentation with Microphone Tutorial<\/a> below.<\/p>\n<p>There is not much to setting up Cortana, except, perhaps, for the microphone bit, which we&#8217;ll talk more about later.  Cortana&#8217;s &#8220;personal assistant&#8221; and interface down next to the Windows icon at the bottom left of the screen guides you well through what you have to do.<\/p>\n<p>We got stuck a bit, regarding setting up the microphone, with a cycle of it presenting this voice recognition test <img src='data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcYAAAHeCAYAAAAB56vfAAAD8GlDQ1BJQ0MgUHJvZmlsZQAAOI2NVd1v21QUP4lvXKQWP6Cxjg4Vi69VU1u5GxqtxgZJk6XpQhq5zdgqpMl1bhpT1za2021Vn\/YCbwz4A4CyBx6QeEIaDMT2su0BtElTQRXVJKQ9dNpAaJP2gqpwrq9Tu13GuJGvfznndz7v0TVAx1ea45hJGWDe8l01n5GPn5iWO1YhCc9BJ\/RAp6Z7TrpcLgIuxoVH1sNfIcHeNwfa6\/9zdVappwMknkJsVz19HvFpgJSpO64PIN5G+fAp30Hc8TziHS4miFhheJbjLMMzHB8POFPqKGKWi6TXtSriJcT9MzH5bAzzHIK1I08t6hq6zHpRdu2aYdJYuk9Q\/881bzZa8Xrx6fLmJo\/iu4\/VXnfH1BB\/rmu5ScQvI77m+BkmfxXxvcZcJY14L0DymZp7pML5yTcW61PvIN6JuGr4halQvmjNlCa4bXJ5zj6qhpxrujeKPYMXEd+q00KR5yNAlWZzrF+Ie+uNsdC\/MO4tTOZafhbroyXuR3Df08bLiHsQf+ja6gTPWVimZl7l\/oUrjl8OcxDWLbNU5D6JRL2gxkDu16fGuC054OMhclsyXTOOFEL+kmMGs4i5kfNuQ62EnBuam8tzP+Q+tSqhz9SuqpZlvR1EfBiOJTSgYMMM7jpYsAEyqJCHDL4dcFFTAwNMlFDUUpQYiadhDmXteeWAw3HEmA2s15k1RmnP4RHuhBybdBOF7MfnICmSQ2SYjIBM3iRvkcMki9IRcnDTthyLz2Ld2fTzPjTQK+Mdg8y5nkZfFO+se9LQr3\/09xZr+5GcaSufeAfAww60mAPx+q8u\/bAr8rFCLrx7s+vqEkw8qb+p26n11Aruq6m1iJH6PbWGv1VIY25mkNE8PkaQhxfLIF7DZXx80HD\/A3l2jLclYs061xNpWCfoB6WHJTjbH0mV35Q\/lRXlC+W8cndbl9t2SfhU+Fb4UfhO+F74GWThknBZ+Em4InwjXIyd1ePnY\/Psg3pb1TJNu15TMKWMtFt6ScpKL0ivSMXIn9QtDUlj0h7U7N48t3i8eC0GnMC91dX2sTivgloDTgUVeEGHLTizbf5Da9JLhkhh29QOs1luMcScmBXTIIt7xRFxSBxnuJWfuAd1I7jntkyd\/pgKaIwVr3MgmDo2q8x6IdB5QH162mcX7ajtnHGN2bov71OU1+U0fqqoXLD0wX5ZM005UHmySz3qLtDqILDvIL+iH6jB9y2x83ok898GOPQX3lk3Itl0A+BrD6D7tUjWh3fis58BXDigN9yF8M5PJH4B8Gr79\/F\/XRm8m241mw\/wvur4BGDj42bzn+Vmc+NL9L8GcMn8F1kAcXgSteGGAABAAElEQVR4Ae3de5AcV33o8d\/srmRS2DiB8Iq5CRdjabW7ki0HTAoCVdfggDFGWmllyZZNilRubrjBJgQIth4rS7IFxASIgRDqUqkEo+dKrITCjR0MfyTkYUywJa1WKxkIucFAgKJiTAK1r759uudMn37NdM90z86Z+a5L3p5+\/M7vfE7P\/LZ7umcqjvsj\/CCAAAIIIICAzM3NSR8OCCCAAAIIIBAIUBgDC6YQQAABBBDgiJF9AAEEEEAAAVOAI0ZTg2kEEEAAgZ4XoDD2\/C4AAAIIIICAKUBhNDWYRgABBBDoeQEKY8\/vAgAggAAC9goMDAzI3\/7t36Z2QC1T6+T5oTDm0WJdBBBAAIGOEvjSl74kv\/H6NyQWR1UU1TK1Tp4fCmMeLdZFAAEEEOgogde85jXyNw89GCuOuiiqZWqdPD8VPvkmDxfrIoAAAgh0ooBZCFV+6kixmaKoPvmGwtiJI0xOCCCAAAK5BXRxVBs2UxTVdnwknFLgBwEEEEAAAUOA9xgNDCYRQAABBOwU0EeL6khR\/Uu7ICdL7yiMWZRYBwEEEECgYwXMoqgutEm7ICdrByiMWaVYDwEEEECg4wSiRVEn2Epx5OIbrchvBBBAAAHrBNTN++o+xbRbMlThvPbaa2V+fj5T37gqNRMTKyGAAAII9IoAV6X2ykjTTwQQQACBzAK8x5iZihURQAABBHpBgMLYC6NMHxFAAAEEMgtQGDNTsSICCCCAQC8IUBh7YZTpIwIIIIBAZgEKY2YqVkQAAQQQ6AUBCmMvjDJ9RAABBBDILEBhzEzFiggggAACvSBAYeyFUaaPCCCAAAKZBSiMmalYEQEEEECgFwQojL0wyvQRAQQQQCCzAIUxMxUrIoAAAgj0ggCFsRdGmT4igAACCGQWoDBmpmJFBBBAAIFeEKAw9sIo00cEEEAAgcwCFMbMVKyIAAIIINALAgOd3slHv\/oNOXhkMpTmzTeNystfdnloHg8QQAABBBAoQqDjC6Mqir9521vlhS94ttff737vR7Ln3h1y7NAniug\/MRBAAAEEEAgJ5DqV+uMf\/1geeuihUIB2PXjecyui\/j37OT\/friZpBwEEEECgBwUyHzGqonj\/\/ffL97\/\/fXEcR97whje0jetPPvYh+aVfer7X3ne+8+9ta5eGEEAAAQR6TyDTEaNZFJ\/\/\/OfLq171qrZKvePtfyD37LrD+7dzx47cbR84cEAGBga8f7\/4i78o3\/ve93LH6PYN\/umf\/knU2Krf\/CCAAAK9LNDwiDFaFO+44w655JJL2mrWyhGjeqG\/66675Nvf\/ra84AUv8F74H3nkEVm3bl1iH1TRfMUrXiGHDx+WX\/u1X0tcpxtnqr7++79zNN6NY0ufEEAgn0DdwriURVFdjfqJ\/\/Pn8vOX\/oKoI8YrVz\/H69m\/fWdBfv8P3i6\/9b+2y9v+5281vDr1m9\/8pqijRF3Me6nY5dsVWBsBBBBAQAmknko1i6JaUR1NbN++XdQRY9o\/tV5RP6oovvtd7\/HCqSPGHbvv9\/7t2j3uzVPL3v\/BDzZs7tprr5V\/\/dd\/lX379sXWVUeTqmCq06yqeJ4+fVpGRkbkySeflF\/\/9V+XN7\/5zaFt1NHkr\/zKr9RON5qP9fRHP\/rRWkzlZf7853\/+p\/zqr\/6qqFO7+kdNq3lqmZmPykmvp2Pr05zmYz39xje+0euDeqx\/9DIzJxVT5aVPLesc9bq6DZ2rXk\/nomPzGwEEEOhWgdTCWKlUpL+\/vyP6vX3bnqbfY1SnT1VhfPDBB71ioF\/gVSHYvHmzfOELX5D5+XnvwiJ1+nRqakouu+wy+fKXvyyf+9zncvVfFZO\/+Iu\/8N7DVNt\/6lOfqhVRFeiZz3ymvOtd75JDhw7V4qppNe\/pp5+WN73pTfLJT37Sy0dt\/853vjO0fW2jyIRqd+3atfLDH\/7QO11sLjZz+vSnPy1vectbvMWqz+qxas8spmqh2uY1r3mNd4GVWk\/9u+WWW8ywTCOAAAJdK5B6KlUdSb397W+Xj33sY\/Ld735Xnvvc53pHipdeemnbMe7dNy5rrxqW57i3ajz8xb\/P3b4qSP\/8z\/\/sFZnrrrvO2\/4lL3mJ\/OhHP\/KODHVAddTVyo9q5+Mf\/7hXANUpW\/VepTqVa56+VUewu3fvrhWjubk57\/3OM2fOeNup5erH3P7FL36xNy\/tf6rdG2+8MXGxmZOKrYq+Xlc9Vsu\/9a1vidmGykUV2dtvvz0xJjMRQACBbhZIPWJUnVbFUZ02feELXyg\/+MEPvKOqp556qu0e6rTp7W+7RW656Y2106vNJKGKjeqPPmJ79rOf7V2Uo4+K8h4h1stBHXWpU7LRH3UEOzY2Jur0pvp39dVXe8Upuh6PEUAAAQSWRqBuYVQpqSOKpSiO6sKaD\/7xffKO23\/T+z194T9E\/ds5fpd86L493u873\/3uhmonTpyonY5UxUqdUl29erV3hKQeq+KU9Uf9oaDei1RHgernS1\/6knfUqbdX8U6ePOk91Edd+ghQr6N+qyM2dQpX\/dNHb+qITW2vYqof9V7fqVOnRG3fqF1vgwL\/p3xUP\/PYFNg8oRBAAIGlFXBv1s\/085Of\/MRxL2Bx3NNrjvuCnmmbVlf6yqNfd976O9ucb\/2\/7zsbNv+u909Pf\/nvpzOFd08DO895znMc9\/1S759biGrb\/eM\/\/qNz8cUXx5apddT65rp6o\/3799fWd+\/ndH75l3\/ZUXFUO2r6+uuvry1X66b9qNjR+GY+Ki\/1WP80atdcV2+jc9LL6j1OWma61euLbo\/fCCCAgO0Cs7OzTkV1ImtpVkc06kjmta99bdZNWl5P37bx55+8V\/7rp3Ny21vvEHWk2GkfIq4uYMlz\/6O64nXLli1c1NLyHkIABBBAoDgBdd1Hw1OpZnPqtGo7i6JqO6kAJs0z8+z0afXHhXqvNu1DBjo9f\/JDAAEEulkg9arUTum0OmKUhTn5rd\/+Qy+lSy++RNQ8G4ujOuJWt0FcuHDBe39R\/aHBDwIIIIBAZwnkOpXaWamTDQIIIIAAAsUK5D6VWmzzREMAAQQQQKDzBHK9x9h56ZMRAggggAACxQpQGIv1JBoCCCCAgOUCFEbLB5D0EUAAAQSKFaAwFutJNAQQQAABywUojJYPIOkjgAACCBQrQGEs1pNoCCCAAAKWC1AYLR9A0kcAAQQQKFaAwlisJ9EQQAABBCwXoDBaPoCkjwACCCBQrACFsVhPoiGAAAIIWC5AYbR8AEkfAQQQQKBYAQpjsZ5EQwABBBCwXIDCaPkAkj4CCCCAQLECFMZiPYmGAAIIIGC5AIXR8gEkfQQQQACBYgUojMV6Eg0BBBBAwHIBCqPlA0j6CCCAAALFClAYi\/UkGgIIIICA5QIURssHkPQRQAABBIoVoDAW60k0BBBAAAHLBSiMlg8g6SOAAAIIFCtAYSzWk2gIIIAAApYLUBgtH0DSRwABBBAoVoDCWKwn0RBAAAEELBegMFo+gKSPAAIIIFCsAIWxWE+iIYAAAghYLkBhtHwASR8BBBBAoFgBCmOxnkRDAAEEELBcgMJo+QCSPgIIIIBAsQIUxmI9iYYAAgggYLkAhdHyASR9BBBAAIFiBSiMxXoSDQEEEEDAcgEKo+UDSPoIIIAAAsUKUBiL9SQaAggggIDlAhRGyweQ9BFAAAEEihWgMBbrSTQEEEAAAcsFKIyWDyDpI4AAAggUK0BhLNaTaAgggAAClgtQGC0fQNJHAAEEEChWgMJYrCfREEAAAQQsF6AwWj6ApI8AAgggUKwAhbFYT6IhgAACCFguQGG0fABJHwEEEECgWAEKY7GeREMAAQQQsFyAwmj5AJI+AggggECxAhTGYj2JhgACCCBguQCF0fIBJH0EEEAAgWIFKIzFehINAQQQQMByAQqj5QNI+ggggAACxQpQGIv1JBoCCCCAgOUCFEbLB5D0EUAAAQSKFaAwFutJNAQQQAABywUojJYPIOkjgAACCBQr0KbCOCU7h5fLwMBA7d\/yVeNytti+eNGcs7tk9WCe2G5uQ6tl95mikgn6etWORkEPy8bKmEx4TZvTxeSyeGiTDFSK7FsxeRGl0wSK3\/fa3UP79\/WiX4faPQLd1V6bCqOPtvHT8zI\/r\/49Lu\/te7+8YvRQ2zXVE+jiEts9PX6LfHjFp71+Pn7P6rb3z2ywb8uEzDtnZNfSpmGm1HC67PFpmECOFWzKNUe36q66FH1OajM6z7Z9PZp\/XXQWtl2grYUx6N2I7N65TmZnpks5agzaWZqplw4PL03DtIoAAggg0LLAEhXGpLzV6ZxltVOtmw8E66i\/rmqnYWOnBsPb3XTECTaMTJ0eXyPLb52Un5281YtntiH9h2rt99dOb+oA4TZC2+lVxD+FevW+aZl6\/1ojfnBqVfUh+ynk9O0ObnyGmKdpvX4Zp6aDv0bNU2TVUzXT2fu5add43dPSql09LmGzNK\/6OaSPT3Px\/KEJOwZ5psUUSe9XbbC9dZL3pXB7jcc7vH6QX3h+OI67zD39f\/eRcRmp+G9P+GdBgj4FcVTOar46ZR+Mff1T7EEcNb56f88\/PoGXnkq3zd5mch66j6ol32d3Yfu6GdvvSfAcU4\/18my+yfn7cVt\/HarG4VdrAk5bfs44O4aWOTft140dcjbIgPHYX37l9tPVFdTyEefu6sMDO3c6U9UlCwfHnGWD+nF0O8c5sOEiY7luL\/ittn\/m+oPBDMeP0ScbnSPVuSpGsE60jXBuRiBv8tTO1U7QD3\/bIJbjqOVB\/iqWbtecrr9duA\/uuqtGnJEhHcc38K3jMbP3088hyDXc08WpcWe4lrvjLOw\/WPXztwsMTC9\/WXoObpyU8Wkunt9eyH\/7uJtneo7p\/Qr3Xz1KyzXUXmi8ozHq55cex98uGBtlPOD0G88ZtZ8F2\/vLTXeVe\/A4vp8ke6f3OW19s8fptunjkeyclEe8D0H\/\/OdE4BFtL+ppZq2mzdj+svDYN\/KNxkvK388he86qzeA1Mt4Cc5oVmJ2ddaTZjfNt5w96f3+\/4\/2LDKjayYInuR9ZFafgyWa2Fuyk0SeaWkvNG1mpC6e5nT8d3qHVPDc3t7DoIqzmmDHy5eYXPp13Un7h9oK+mE++PNupdVe7hV55xYuhGb9+P5PaVPPSLP31w27Krr5X\/Rz09sELWGvxVC7mC42Kr37q5ZjWL3\/L8P9VHDPXJMPweMe3T8qvcZy4Y\/gPsvA+7O9b0bFyY9T+WA32k3o2Kvtonxutb\/Y4zbZRjGibSXmYz58kc9W23peTfM3lZs7+dOCjl4VzUsvr+eqtgt\/h7dX8+JiaOTUyCiIz1aqAKoxtPZWqL755YMMTct94+MKbxSf2yZXGVau3nZivHQqrK031KaOBga1yvLrEOTMtFwaHZKi2ZjkT9XKr12Kz+TXebliGhj4nR93TzWcOT0qf+57m5k03yvnpM+KcdU1W5jdp3Ga4p5Xh3XJmaoNMrPFP5enTbWqtZr3CLQSPWonXn7J\/pMWs168go+SpvIYqSlJ+zcRJzsicu1Lcs6\/Gz4gMDfZ5+4wx05tMs4mupx9nXb+ebdYYus1Wfi+1b7O5t9Oo2Ry7Zbu2FkaNdvOxv5TXH7+t9t6Fmt93xTY55V2xqq9cnRd1Vaf3\/uLIWdnl6Pn7Zb0O5P5ecC\/gmTYeq53+fMWYUcBkWm5ZQkfzy7KNWqf+diOyaeOg96J21r3nZXTzaqmsHpKFo+67SBOT0j+2SYq4\/KeRpXqhm\/LGZb\/Mb11WG89WvJJ8io6n2qgXM61fSblF59Uft+ja6Y+LihO0cF7cv5uMnymZnlmUleFq6S2vZ2MEqE3mWT\/NNk+MWsMFTjTa1xs3ld23cazkNZbaKDmr7py7JIVRZLNMHFwvR7f69\/D1bRmTG2feJ1tT7vsz\/6o+PX5v7YhRbbdeTsi9te2mZNfeE4WOVKPc6jXWt2WXbHOP7N5q3B7i3c6xcnvdWyiybLd686gsnLhF9p1dL2PukUBleJOs75uUfcccr1DWyytpWbyf9S3VHyzBUaI6gvX\/GonHSWot+7xW4iVte3rHLjm2ZWPq\/pbWrywZZxk3M056fs3tN2bs+PRM6CyN2g8\/sHinuL9CP0k5hVaIPMizfpptnhiR5pt6GG+v\/r4u7p+Z6gxN\/deZbL5NJexuFM+52Uhsl0VgiQqjGugJ+cyGv5Kt3tWUm+WY8xm5\/N6rY1c5qhcbdc+jPs36lr71xhHjZjk6tU3m7\/WvAh2o3Cz9u+6UlekXpno7mDpaNa+2qw+Vnlv97dTSEdl79gHv6FhfvfmyifXyyOSWBps23s4rhIvnjaND9yhyrCLn50e9QtmggYTF+SzVEerZrfoDG67y7t087L3ItuLlvwCEx6eVePFtX+b+4TAkW1L3t\/R+xcnUi1U418bjFo6Sll\/eOOGoyY\/WyaduPlp7fq3du0L2n9uTcGYhnpN5hWu8z\/XXN3NJt60fI95m0n5ittRoOt++rp7He47cFXqdqWx6c6SRrL7+Zkl9igSMPKxvFFmZhy0KVNQblS3GYPMuFVB\/4T\/r8Eb5ScNC3qUAXdMtdTvBhGxxjsqmrulTsR1pbV\/Ht9jRWNpoc3NzsmRHjEvbdVpvLHBYNt18XG7Y1OjotnEk1kCgswXY1zt7fNqfHYWx\/eYd2mL4hnJ19e\/A\/jnxT492aMqkhUBTAuzrTbH10EacSu2hwaarCCCAAAL1BTiVWt+HpQgggAACPSjAqdQeHHS6jAACCCCQLkBhTLdhCQIIIIBADwpQGHtw0OkyAggggEC6AIUx3YYlCCCAAAI9KNCRhVHdbFv\/++LKGqnq97iFPlOyrLaIiwACCCDQiQIDnZiU+ri4ee4r78ShIScEEECg6wU68oix69XpIAIIIIBAxwq0qTD6pyjvPjJe+17Fi71vnFCfMbjM+2Bj84OKRdR8\/5s3fLnwJ1X464ZjBtuH113ufUi59tdxD9XaTTxl2x8sD+LqGPXi+zntnq63fdBn84PM\/e+cXC27OY2rofmNAAIILIlAmwqj27fKedm3yy151e\/v876VoHKPrDk9J\/Pu9zA+tvNC6OuZAg1ViK72vr1Breetu736bYNGzAXvA5Lj635103FZGyqOJ2RL5aj7gcp+u7MHB2XPGqMIuzH3DAfL1TeABF8blSF+w+1vk29s\/5rXj\/l59T2GFMNgrJlCAAEEOkBAfbtG+T9nnB2rRpy7Twctndq52rlyezBjcWrcGVm505nyVjnkbJCNzhF3euHgmNNXnQ62VlNuzKFlzk37g7kqxnBsXbNtFTecRziOua4f18yrcfz626u+LBvUffTjH9hwUcgh6A1TCCCAAALtFpidnXVrjgU\/5hcVh9J1Vor5BeTqW7gvDA6537dX7ye8jfqutaHBPjkf\/nrzxADZ4iduWpu5+MS+2ndLqlOpt52Yry1jAgEEEEBg6QWsKIx5mBZmpmW67gbnJVwDp2R6ZlFWmhW2zvaN49fZ2F3Ud8U2OVU9JaxPDT9+z+r6G7EUAQQQQKBtAh1fGNU3Xd848z7ZuiO4KuX0jl0ykUDUt2WXbBv6nPGeoMjp8Vvkwyu3y65a7ZmR+8YP1bZWyz+weKe4vxr+ZIufHiapL3ptLr7REvxGAAEEllagI+9jDJNslmOOuFeRXi0D73cn3B911PXYPW7RC6\/oPhqRvWcfkOnKre6Vrrd6S711z5k3Ra6TT918tLbcWVgvh5w9Ur2cJxYxPCNL\/PAW4UfxvvjtH5Wx8Io8QgABBBBYIoEe+z5GdavEhHtF6lHZtETgNIsAAggg0LkCfB9j544NmSGAAAIILJFAx7\/HuEQuNIsAAggg0KMCPXYqtUdHmW4jgAACCGQS4FRqJiZWQgABBBDoJQFOpfbSaNNXBBBAAIGGAhTGhkSsgAACCCDQSwIUxl4abfqKAAIIINBQgMLYkIgVEEAAAQR6SYDC2EujTV8RQAABBBoKUBgbErECAggggEAvCVAYe2m06SsCCCCAQEMBCmNDIlZAAAEEEOglAQpjL402fUUAAQQQaChAYWxIxAoIIIAAAr0kQGHspdGmrwgggAACDQUojA2JWAEBBBBAoJcEKIy9NNr0FQEEEECgoQCFsSERKyCAAAII9JIAhbGXRpu+IoAAAgg0FKAwNiRiBQQQQACBXhKgMPbSaNNXBBBAAIGGAhTGhkSsgAACCCDQSwIUxl4abfqKAAIIINBQgMLYkIgVEEAAAQR6SYDC2EujTV8RQAABBBoKUBgbEtmywmHZWFkmy1eNy1kjZefsLhmpDMjFo4eMufZPNtevKdk5vFwGKqtl9xn7DegBAuUIVJ8nAwMy4P67akfvPVnaWhj1i5mGPj2+JuFFKjwoamDMf3rbcnYIoiKAQO8I+H9M9lfGZKJup7OuVzeIJQtVX9fK+84vWpJvOWm2tTAW0YWp96+Vxjty\/ZYWD23yiu3mA\/XXK3tpp+RRZD87u08jsvfsrMw7Z2TX6iJ7Tax6Ap29T9TLvPeWLR46Kif6HXnGjZ+R+fl579\/j9\/Tek6VzC+PCKtn5mD8weoDmTm2XwQWRSv9xeWsLpwanps93xB7fKXkUidGNfSrSpxdjsU\/YM+p6rG7YtMWepEvItHMLY0JnK8O75cyUXxx\/evxog9MfCQGYhQACCCCAQAMBqwqj6ktleEhWSsX977xMh94Tjr83Gb3gRJ\/SuXrftMdy7C3B+5fx06qN46kg+n1T3dbBjc\/wTtNGL4LxGqz+L08eOl7x77MG\/QvnGsw324z7mD0SydMnkebaCLcYfqTb1znr8QivlXyBkr9OMTl575tH3hdPtsvent7H9DiF2ohcSNScg++i7dTvpJx17LT3+b191chHr7\/Uz7fwPlDGo\/hYJu9\/aW1H98ts46H3C92Wfq3Q+0nQWuP89D4VHav421aNY6l2s+UWj5W27wV9ac9UWwujOuKbcuZFn7Nes+d00+\/3OG55HKqe+vYH4arYG8Y\/O3lrU+9HNhtP7Zi3nZgvaOT8nSYpnnqfVT8Zmm3s4MaXeV7qvYTZc3tk2A2U1m\/VxvnwXyHNNlstoPGxUgHVHyrN9Es9qZffOhnKSY191ljF9Nt\/MdMvLGYyk3vDVwr7BaM5g9N3r5FQG\/3nZO8a\/yrbZhwWj6j327d67yuZOTc7FmaMrNNp\/o2ev8U+37JmG16v2dzDUYJHzY5HmkWR+TUbKym3tFhKoqjXmkC1iSmn437OODuGljn9MuLcfTqe3MLBMae\/v99ZNrjTmfIWH3I2yIA375nrDxobVOO46165PRzo1M7V3vo37TdWr03mi7c4Ne4MS79z0ciI+3ujc6QWp\/FE\/Tzc\/FfFDXR7fbG2\/LwDF799vb5pc2DDRQlejqPnR71UjLFtYcO03tXrk85FjZ+Zj4qlx1UtSx6XcIs6lu8edtI5xPehZKPW+x3sa4njskLvq46j885jYG4Tjh+06zuE93VtGt5GOfoOSduopTW\/yFjoeNH9Q22jfjzHhOetjpc8ru17vvlZmv\/32477mOuo6bT18uUejRo89uPkHQ+9X\/jbJb325M8vfazyxWqUW+vPuUCv6KnZ2VlHig7aerzqkz3hCaafmOaLpx7I6Autn4c\/mNEdX2+T9ETVy7LG0zuAmVNWA91WUh71YuidKryd39dGhVG3Ge9funu9XKLLdPxwbv5aOu942\/5yPb7RPkTbUI\/ruwcFI5xHklHr\/dZ5R\/ezpLybMaj1NeE5oV+0kwqtal+3l+RQb5\/V25ljpftZZGHU+4vZTuAWf\/7WLCJFO9gmz5QfXzlk+Rcd37y5p2cW5BEep2CLpPFoZNFMfnqbaB56fjHj1PpzLpApfkoVxraeSs11QKtOEa0N3gNU55716bKROx+Tw7eoaFMycWxGxL2C9T17kq6iGpahoaT3I9MyaT5e3xXbZNzLKS12K\/PD7zkknV7NEl2dalOn4VSuj0xGvUZkaNDdHVz3PWsa3deVpbXoOlMyPePeG5U6ViJ9W8Zk3UJFFmamxX8XOBoj\/jjZfUQ2bRyMr5w4p\/V+H5446UUe239UNiW2oWe2ZtA3OCpjsSvn\/X08zXV4eIVuPPbbWVgvYyn77JY97\/WuAJ91x8L8wIhYkJZmdOrzLUunms89LXqz45H8HCgyv+ZjJefW+nMuzbCo+Z1bGBN6qHacg+69Nfo9SnGfstPTjvdiHi2i\/oUEye\/jJISuzmo+3vLBIe99uvTY+Zeoc\/N+P+LvAeWNpt6v0UXxsep7itEYNx\/7qty1ss+7Hebm6gUkSRdhRLfL9ti3Nd8bjm+X9w8ZkSLcW+t3UOz0e97xfuk55Rio6PVddfvh3\/3uPjsUnlV7pC9yy\/NHSm3jzBOd8XzTryv6trD47\/3eH2zhbjWfezhO8KjZ8Uh+DhSZX\/OxknMTae05F5iVNdW5hTHhPsYFp9Ff5GUxtT+uOrrTR4bmzbbqSfu1bWkvZ+l5Dqxa5R0BLM5MytHQ1bzmNtUb4OeDFwLvyl3jSkNz7e6Z7tV+p4+gc3bave7bkXov1ulbs6Roge4bj85+znVuYcy0ZwWnkaIfBhD6qy\/zJ50UHS9TJxJWCk5dqH79JHbaM2GTBrMGXrrdvwdUgqsY0zfZLMecOe9TLx5YN+Adkd97U\/jKyvRt05ZkORr0\/zJt5ugnrdV881vot3sKuvGFuzYY+GLOmWmZ6c+jVz1yzrOJe45FvdWhTgMX8\/zN1XiLK7c39\/zjUWR+RcaKsrfwnIuGKvCx5YUxOFc9eTj1MCgHV9HxcjQdWrVegTgsu\/eeC62d9YG6Xeb0wVH\/1HP1Ev9G29587C+900j1jzQbRVHLA9v7xpM\/0Fx\/HFUnHKVk73fwfmb0toy4SmcZLD6xT\/YkfizilOzae8JLf2jjpthbBNPHJmLvOzpnJ2RyOu\/nawYexTx\/4+LlzSk+92bHI7mPReZXZKzkbNXc7M+59BhFLbG8MIroiwTUvX1JNx6rU5LR+SNDKz2\/z0\/EX6CbidfsYKTn4f+FFv\/oO3Vv421yYSTrhSXxzPq2TMjsZ\/ziGL7Ixo3tvkkW\/dYJfQon61Fcep+CsUq6x1Dd26cvrhrd6d9XGc++jDmt93vNnu3+Hw9uoVkb+XYTEffCqZXB0bbevzrFQJ0qD7+PrPaxq717XNV7b9uNz8nUF0epF\/CtoW9cOCxjI\/tSjzCz7BN5nr\/19gL9oQLR53y9bZpdpseyqNxVHnnGo1HeReZXZCzvAz4KeK1p1P9WlltfGNVR0IGd\/ntuagf1L1YJrmYN3QxdlaqsHvLeb1MvTnp9\/eLQTLxmByA9jxHZvXOdF9bMcWDgKvnA4p2ybaN7+qmFH1Uc1fuUqvBuMb9ZoHI+diXwsivv9V7wVm\/f1eCKSz+h9D6pTy2qHrG6q4b7lXTFcQsdzLtpy\/3eLBMH13utqqJxZeiTb7bKSeNZ1kkG6orBB3YMeS\/G+nmg9jH9zQrxq2w3y66dq7x+hp9rW+Wh9Q+Id9o9wb7RPpH3+ZvQRG2WvkI46ai2tlJBE0W\/VuQfj\/odKTK\/ImN5Wbf8nKvf91aXGk\/ZVkMt3fbqE3T0B4yHsqi+dxFcxeovNV+cQutXH+SNlxQjy7x6edSO7IxAtU+pyXvGyoihJ1Uf1QuZKo7qCtTNB4JirNdRv\/UVe1FDcx1zul6f1HqqX\/PGxT1627zt6O1a\/11Mv\/1+Pe5d1WvmpPq1P3IVcCcZrLn7dOxiLvUCfcq9yMu\/JcrsjYjab6IXf6n9st774I32iSKfb\/r2lKRTwOGeFPOoyNxVRnnHo1EvisyvuFjFPOca9b2V5RV1e2QrAdgWAQRsE1D3xd4qJwfvkrRbd2zrkd35Mh6dNH5zc3PSFUeMnYRKLggggAACdgtQGO0eP7JHAAEEEChYgMJYMCjhEEAAAQTsFqAw2j1+ZI8AAgggULAAF98UDEo4BBBAAAF7Bbj4xt6xI3MEEEAAgZIEOJVaEixhEUAAAQTsFKAw2jluZI0AAgggUJIAhbEkWMIigAACCNgpQGG0c9zIGgEEEECgJAEKY0mwhEUAAQQQsFOAwmjnuJE1AggggEBJAhTGkmAJiwACCCBgp0CbC6P6EtTlMlCJfyGunXztzhq\/\/OK+Wb\/5vZP5g3TgFku1L6hvglgmy2NfyFw0UbvaKTrvZuJVx7L6PZ7t+JLl\/Fku1f6WP9MithgoIggxEEAAAQSaEfC\/cupEP9\/+14xeWdu0+YhxRPaenZV554zsWh3u0uKhTaK+RXzzgfD8Ro+a3a5R3KTl7WwrqX2RdL\/k9Zlrs0D9\/Y19weax1bkvHjoqqiiqL3ued78cWv3L+qXgOkZ7fqfvb\/X30\/ZkV3QrbS6M6elPTZ9PX1hnSbPb1QmZuqidbaUmwYKeEWB\/6\/6h1mN8w6Yt1nZW98HaDiQk3jGFMSE3ZiGAAAIIINB+AaetP4ecDTLgLBvc6UxV2104OOb09\/cn\/rtpf3py+bY74+wYWhZro158s+VGbR3YcJEXOy3e4tS4Myz9zjPXH6yGjTr4j02H5FjR7fxw0fjRfK\/cftrsTmQ6buOv78\/vk43OkcgWeR9qH7N\/STl1Rj+ixlnHxldptq96O\/XcOH04y3Mimmd8VE7tXF13n9f7SdJYqGheTjLi3B3afeq3q\/uRd6z1dsFrQ7wdvU7yc8NxovtPXETPicb2H5s5J7URja\/zCXLW8ePPqeC576+TNDaq\/fjzrXEsFTFbbvFYqs2kvuqeBL+jZo6j9x\/TTU9nixlE76Sp2dlZdxy6\/Mc\/\/32VvO\/8Yqynx94yIBePHorNzztj86YbvU0+P5Ec68zhSZnpF0k6XbJ4RL23utV7n8Fst9ncTo+vkeW3TpqhZOr9axP76ZzdJSOVuI23\/sYjoRjNPfCvZLvtxHxs87Sc9Iqd0I98Y9N8Xw9ufIYkGWmL\/L\/9Kzqv3jcd23Ry77icjc0tYkb5\/W\/leZbWw3xjHERJG7O059TPTt4qea+MbjZWUm5psVSPzk+fCTrGlC\/Q3kod\/6tDt6\/\/gsr7l0a97fRfUeqvmOhfbOZfO1nbTG+r3tFV0jLf4aKREe9IMvoXu24n\/tdcsp\/upx8v\/Be+jhX\/S9SPpdqI\/sWr46ll8e30iGX57fZ9VTgftZWOH42t5y9tP5odm1b6mnxUrscuef9M3hccx9\/fksfO3WZF\/GxNdP\/TI+sdEWU+Yiy6\/0n98\/sW3W\/8fOst0z3Sv5sb4\/D+mTRmflxlH369CcYkap0+xvliNcpNH91G21fbjW0LnRLQSJHfSePhr5Leh0gISx6qI0Zpb67F49YbFL0zhHfSoMe6OEYLQ7BGeKpeW2nL9A4b3iGDnT75Ra96Giv2BEv2022oJ2Q8XvCkNJfpfNP6rmMmvwiFXZp5pMfGzEm3ubT9aHZs0hXy99WPpcfINApaSd4X9D6dZdz0uuF9M2jByztzYQy2i0411\/\/k\/qWZ6H0nrS\/hnJobY91G8v7pODq35Ncbv83ouOhtomOs52eNVT+36mtAbCzDKvUfJY+H2kbnGu1D\/Xidu7TLT6VOyfSMe\/p0YZW8Z0\/yFV99W8Zk3UJFFmamJX7SKd85hdWbR2VwQSR6OtU7jSqrZHRz5P4UN7yzsF7GbkluZ8ue93rxZt3csp766rtim4zH4o3Ipo2DsUbOnr3gzRvduUeGY0tFKsObZHSoyDPt\/uk9dUuO+lfv1GEn9KO1sWm1rwkDknHW4YmT3ppj+4\/KpozbFL9aef1v5nmW1r9mxzh5\/5ySiWMzdV5vhmVoqCIVOS+Nz1w2Hys5txEZGnSfy\/3nZM+aMZlIA2F+TaDIV75a0M6YOCvT0+4RsayUoXhNqqaYZ2et3ytdSH56\/Kix4\/k7eN\/gqIwl5NA\/OCRDKWErw0Nu5vmK9nI3XlKRizcR\/NGQbhPfqpk56v0OvxjG30dNi9cJ\/WhmbMrta5qWOb9942q2qqfb0f9mnmc6v+jvZsZYxUjeP\/3XG1V89q71\/\/jTfwT6v+Pv5UfzCR43Hys5N5Gbj31V7lrZJ5X+43Jz9Y\/TvPeMB\/l1\/1QXF8Z2D55\/ZKZ2vKPVDylwzk7I5PSiDG3clLFgBTk7Z6fdvy0dqffkDdbuzCl1AY0+MjRvYFY3MX9tW9qfBJ3ZFzOrpLHp1r6a\/a433b7+F\/s8S+tT0hinrWvH\/OoN+vP7vbNkKmd1gR8fz5k8el1cGLMcDWY5qkyGS5q7Zs92b6fTp1MPjX9Azsl62X5PwuFiUgBjnnNm2ruS1ZhV\/KT71236aZ3qX61NtxqcDtr52Lz8ZDL5dHbT4c0NS+2H2ZA\/HR+bNvY1nk58Tl2P+OrJc6pHn8kLI3Pb2\/8in2eRjtQexse4tihlwn+9UW\/dqP1df4pN7HfCp37FAxYZKxp9sxxz5rz8HljnfiKou6\/ce1NZVypH27bncRcXxuC8+n3jybdR6I9jKu6obLOMbegX\/3TqITn62QX5ufVjqe\/1LD6xT\/YkfgTelOzae8Lbi5o52my8+1Vt3BV1EY9uo22i87M\/rvdHx2HZvfdc9lCpawbvnxbdj3xj046+piIYCwKPPLdlTB+biL2Prc92GMHrTLa7\/\/meZ2mJ5xvjtCh6fvB6M3m41dsfioyl84v\/vvnYX3p\/yC\/OTMrRVlOOh7d6TscUxpGhlR5k2gtcmnK97fQFLOoeouj9iur+Rn2\/X9oFKNE267Wl11X3WqnTqYfH\/M9ATLp3Ua+rfqvTGeFz\/ep+sKu9+y7VxQHNHG2a8dOm69l49xDePCOr3IsFoj\/ZPxexesTuWrw1dK+o6t9tcmEkfkFQtK0sj\/XFGEljXK8fWWJnH5ty+pplf4v2Qx9NqRf9tbFvwHAvilkZHB3oi8\/Uult3mK+Mh2VsZF+OMxbl9D\/aN\/Nx3ueZua05nX2Mza2Sp\/VzSt2jm\/QNGWp\/TJqfFK3IWCLuc869mGC3OcRuo\/p0cf3rMJKyC89rZj8NR+i8Rx1TGCurh7yrMNULnH7TOlwwkvHqbVcZ3i2nD456G5pxVXxdFEfufEwOx67kzN+W3kK\/2Bw\/frzuVadqfXUF2QM7hvxz\/dU3xAcGgjfpy7yyUNkc2Om\/zxe1UTeGbzx4QNa7V+xGf7zPRXRPFzW+aGdEdu9c520ejn+VfGDxTtm2MR472laWx832o1HsfGNTTl\/r7dvp+W+WiYPrvcWq4F1Z26\/UBSFb5WToGb9Zdu1c5a2rXsz1806t99D6B8Q71ZbekLGknP4bDcQm8zzPYhtXZ+Qb47QowXxzXwx7+hfjJH3gQrB1eKrIWF7kyvnYRUHLrrzX++Nn9fZdqWe1wlklP2puP02O1SlzQ0+TpUxK7Qi6iOXJo9F2fVsm3PPpwRvOOrY6GjuY85PsG7Xlxw5ebLLscGvuPh27EEU9YU+5uWUt2LpPeX+v2XNa5k5t9\/4gqW1bfY\/k8JakwlX\/KttajOqEsp\/9jP+HiV6mLsKZPefeIhL\/ICK9Su7f+fuRrYk8Y1NGX7Ptb\/G++Pv8495ViOZStc\/vV\/bGTGUXvRBKjVHe94TL6L+RZsJkvudZQgBvVp4xTothzk\/cF9UK1edVnm\/OKC5W8IeLmWszr4Hm9nq62f1Ub9+Rvzv3Nkt7M0u+MdrsT\/rNsuZaSzudlKM\/L9tN1EubffOtJ\/W7+WhsWZ5A4+dZWtuMcZoM8x2ny2\/wX5q\/Q9RnEt772XlJu3dxabLK3+rp8Xu9z28174vy35MYTPywgvwtsAUCzQt0y\/OseQG2LFOgY06lltnJ9sUOLlrIekFP+3KLtqQ+nST+hrxaS92o7b0f4p7+MT81SH2Kz4WUDyuIRucxAuUJ2PQ8K0+ByOUJuDey8NOqgLrarPbGuvstGuo9mrLfH2w1Z3\/7Ge8N+b0pwTbuPyO7jFsw1Xses3tSVmY2AiUL2Ps8KxmG8IULcMRYMGkzFy4UnELGcJvl6NS28IU31S3bdfFPxkRZDYGYgD3Ps1jqzLBAoKLebLUgT1JEAAEEEECgdIG5uTnhiLF0ZhpAAAEEELBJgMJo02iRKwIIIIBA6QIUxtKJaQABBBBAwCYBCqNNo0WuCCCAAAKlC1AYSyemAQQQQAABmwQojDaNFrkigAACCJQuQGEsnZgGEEAAAQRsEqAw2jRa5IoAAgggULoAhbF0YtsaUF8kvFz6K2MyYVvq5IsAAggUIEBhLACREL0toL7pYaQyUPt2dvWZngMpH9De21L0HgE7BNpeGBcPbfK+KXzzATuAyBIBBBBAoLcE2l4Yp6bP95YwvUUAAQQQsEqg7YXRKh2SRQABBBDoOYG2FUZ9ClV\/b+Gxtwx4p1QHBgYkflrVvwBELTP\/xderN17qi3iXyfJV43LWW81\/nD1ePIeLRw\/FGtTvL+llup+6nat2nIlt02iG+qJgvb3+nRSntbbj\/Utqo1GuIq05Z+1rq+2IxPurx8zsY9RU5xfsR+baTCOAQDcKtK0wZsXzC8tV8r7zi7FNVDFNejGLrRiZsXhEva+5VU70h79hKy2e\/+IYz+FnJ2+te7Wmuuhi+a2Todan3r82R87+i\/dtJ+ZDMdSDRnHytJ3WP6+NjUdibWedkc+5+b7ma0ckrb+NxlMVxaSxiHpUhnfLlDMvj9\/jf6uz+kLneSf8Jc\/RbXiMAAIdLKC+j7GdP6d2rnb6+\/udm\/bHW12cGneGpd9b\/sz1B0MrLBwc8+anbRta2XtwyNkgA85FIyNezCu3nw6tovOIx\/O3U\/PDOZxxdgwt83IwY+mc\/XZGnLuNZnQbfbLRORJqPe2B28aqcAy1pm4jGkfPz9d20L9lgzudKSMVHU\/1PdqWsVpkslnnfH11nGbbCfqbfzyzjluEhIcIIGCtwOzsrCPtzl4Xi6TCeGDDRYlFUeeoi2P0BV0vD\/8OXhCT2lLrJrWn8wu\/iOrIfkyzaJjFJN5OUEzjy3TMbL91rmacZtrW\/Usz1DHNPtbPsDnnejGT+qoLY\/wPmSCS3s4cO91fc16wRd7xDLZkCgEEulNAFcYOOpU6JdMz7unThVXynj1bEo+x+7aMybqFiizMTMt04hrxmc7Cehm7JT5fzdmy570yuCAy68bz34eckoljM3VyGJahoYpU5LxMR9467Ltim4zH2hmRTRsHkxtvODf8nmi9U3p52j579oLX8ujOPTKckENleJOMDuXfLfI5RxvO3td87RQ9ntG8eYwAAt0okP8VsDSFszI97R7BykoZ8t+qSWgpvTAlrOzN6h8ckqGUhZXhIbc1s9D6OUj\/Odm7Nnzhj38RTPx9Rx16udtOUqHRy7P+1hd7JL0nmhYje9vBHx\/pxmmt1J+fz9mP1Uxf87Wz9ONZX42lCCDQiQIdVBjbz+OcnXaP\/Ryp92LbzqzUBTT6yPAZN35G5ufna\/++ti2tvLczw+baSnIuo69J7TSXMVshgEAvC3RQYcxyNJjlqDL7cDpnpmWm31zfz0Gdzt35WFCUzALlTZdyxWFw2k+1\/ZPJ5NPJZrZNT7tHxNFTwUGs6lFWMKPlqbhzOX2Nt7OU49kyGwEQQGCJBDqoMI7I0KCbjvuifd94\/H5B5bN46Kh3y0WeI7zFJ\/bJnsSPn5uSXXtPeOxDGzdVT4MGOUwejryJWPoA1Sv6h2X33nMFZBC85\/n5ifrGeRvL59x8X\/O1s5TjmVeQ9RFAoFME2l4YR4ZWen1PemHWF8Oo+8ui9yuq+xv1PYJpF46koar7FcMfDqDuobvau1dSXcyxvXr\/mdpe56Du6Uu64V2dAkyan9Z29vnVI+b+4\/LW0AcJqFxvkwsjzV7EE85g9eZR74KjJGPvXsibZ2SVe4FRMz\/ZnVvra\/Z2ih9P\/QEO5ewDzaizDQIIFC7Q7gtu9e0A6rJ7\/c+8BUHfkqGXRX+b9xDWz92\/FF\/dlnBgl3\/vZDSWemy2rePpS\/yT1lfzzBx0f5JvB3AcHSupHd2e\/p3Wd7MPZpxm29Y5JfXvpoOnvfs1896uYeaYGDdy32revurbNfK2o2zr9TfveOpbQlQe5j2gegz5jQACdgssye0a6lNCTh8cTS3wfVsm3AtO9nu3ZZgrqSO7g+7FKPrTRcxljabX3H1aohevqFscTrnxDsdusRBRn1wyd2q7d2QVil1977GZHEJxUh6ovs9+JmyjLsKZPefeWhH\/IKCUKI1nJ\/av2rfDW5o7WlSt5nFupa952vHyKnA8h4dXeMDB6XfvIf9DAIEuEqio2t5F\/TG6ou6Nu1VODt4lj6nCYixhskiBdjm3q50ibYiFAAK2CczNzUnb32O0DYl8EUAAAQR6S4DC2FvjTW8RQAABBBoIUBgbALEYAQQQQKC3BCiMvTXe9BYBBBBAoIFAF19806DnLEYAAQQQQCAiwMU3ERAeIoAAAgggwKlU9gEEEEAAAQQMAQqjgcEkAggggAACFEb2AQQQQAABBAwBCqOBwSQCCCCAAAIURvYBBBBAAAEEDAEKo4HBJAIIIIAAAhRG9gEEEEAAAQQMAQqjgcEkAggggAACFEb2AQQQQAABBAwBCqOBwSQCCCCAAAIURvYBBBBAAAEEDAEKo4HBJAIIIIAAAhRG9gEEEEAAAQQMAQqjgcEkAggggAACFEb2AQQQQAABBAwBCqOBwSQCCCCAAAIURvYBBBBAAAEEDAEKo4HBJAIIIIAAAhRG9gEEEEAAAQQMAQqjgcEkAggggAACFEb2AQQQQAABBAwBCqOBwSQCCCCAAAIURvYBBBBAAAEEDAEKo4HBJAIIIIAAAhRG9gEEEEAAAQQMAQqjgcEkAggggAACFEb2AQQQQAABBAwBCqOBwSQCCCCAAAIURvYBBBBAAAEEDAEKo4HBJAIIIIAAAgNlEkxOTpYZntgIIIAAAj0mMDo6WnqPSy2Mb\/vpHV4HHnnVl0vvCA0ggAACCHS3wNe+9rW2dJBTqW1hphEEEEAAAVsEKIy2jBR5IoAAAgi0RYDC2BZmGkEAAQQQsEWAwmjLSJEnAggggEBbBCiMbWGmEQQQQAABWwQojLaMFHkigAACCLRFgMLYFmYaQQABBBCwRYDCaMtIkScCCCCAQFsEKIxtYaYRBBBAAAFbBEr95JtP\/Nz9nkO7Pq3AFnTyRAABBBDoXIGK4\/50bnpkhgACCCCAQPsE5ubmhFOp7fOmJQQQQAABCwQojBYMEikigAACCLRPgMLYPmtaQgABBBCwQIDCaMEgkSICCCCAQPsEKIzts6YlBBBAAAELBCiMFgwSKSKAAAIItE+Awtg+a1pCAAEEELBAgMJowSCRIgIIIIBA+wQojO2zpiUEEEAAAQsEKIwWDBIpIoAAAgi0T4DC2D5rWkIAAQQQsECg1A8RF7nEAoLOTfEX3vmzzk2OzBBAoGWBH3xkWcsxei3AgPNfpXeZI8bSiWkAAQQQQMAmAQqjTaNFrggggAACpQtQGEsnpgEEEEAAAZsEKIw2jRa5IoAAAgiULkBhLJ2YBhBAAAEEbBKgMNo0WuSKAAIIIFC6AIWxdGIaQAABBBCwSYDCaNNokSsCCCCAQOkCFMbSiWkAAQQQQMAmAQqjTaNFrggggAACpQtQGEsnpgEEEEAAAZsEKo77Y1PC5IoAAggggEBZAnNzc8IRY1m6xEUAAQQQsFKAwmjlsJE0AggggEBZAhTGsmSJiwACCCBgpQCF0cphI2kEEEAAgbIEKIxlyRIXAQQQQMBKAQqjlcNG0ggggAACZQlQGMuSJS4CCCCAgJUCFEYrh42kEUAAAQTKEqAwliVLXAQQQAABKwUojFYOG0kjgAACCJQlQGEsS5a4CCCAAAJWClAYrRw2kkYAAQQQKEuAwliWLHERQAABBKwUoDBaOWwkjQACCCBQlgCFsSxZ4iKAAAIIWClAYbRy2EgaAQQQQKAsAQpjWbLERQABBBCwUoDCaOWwkTQCCCCAQFkCFMayZImLAAIIIGClAIXRymEjaQQQQACBsgQojGXJEhcBBBBAwEoBCqOVw0bSCCCAAAJlCVAYy5IlLgIIIICAlQIURiuHjaQRQAABBMoSoDCWJUtcBBBAAAErBSiMVg4bSSOAAAIIlCVAYSxLlrgIIIAAAlYKUBitHDaSRgABBBAoS4DCWJYscRFAAAEErBSgMFo5bCSNAAIIIFCWAIWxLFniIoAAAghYKUBhtHLYSBoBBBBAoCwBCmNZssRFAAEEELBSgMJo5bCRNAIIIIBAWQIUxrJkiYsAAgggYKUAhdHKYSNpBBBAAIGyBCiMZckSFwEEEEDASgEKo5XDRtIIIIAAAmUJUBjLkiUuAggggICVAhRGK4eNpBFAAAEEyhKgMJYlS1wEEEAAASsFKIxWDhtJI4AAAgiUJUBhLEuWuAgggAACVgpQGK0cNpJGAAEEEChLgMJYlixxEUAAAQSsFKAwWjlsJI0AAgggUJYAhbEsWeIigAACCFgpQGG0cthIGgEEEECgLAEKY1myxEUAAQQQsFKAwmjlsJE0AggggEBZAhTGsmSJiwACCCBgpQCF0cphI2kEEEAAgbIEKIxlyRIXAQQQQMBKAQqjlcNG0ggggAACZQlQGMuSJS4CCCCAgJUCFEYrh42kEUAAAQTKEqAwliVLXAQQQAABKwUojFYOG0kjgAACCJQlQGEsS5a4CCCAAAJWClAYrRw2kkYAAQQQKEuAwliWLHERQAABBKwUoDBaOWwkjQACCCBQlgCFsSxZ4iKAAAIIWClAYbRy2EgaAQQQQKAsAQpjWbLERQABBBCwUoDCaOWwkTQCCCCAQFkCFMayZImLAAIIIGClAIXRymEjaQQQQACBsgQojGXJEhcBBBBAwEoBCqOVw0bSCCCAAAJlCVAYy5IlLgIIIICAlQIURiuHjaQRQAABBMoSoDCWJUtcBBBAAAErBSiMVg4bSSOAAAIIlCVAYSxLlrgIIIAAAlYKUBitHDaSRgABBBAoS4DCWJYscRFAAAEErBSgMFo5bCSNAAIIIFCWAIWxLFniIoAAAghYKUBhtHLYSBoBBBBAoCwBCmNZssRFAAEEELBSgMJo5bCRNAIIIIBAWQIUxrJkiYsAAgggYKUAhdHKYSNpBBBAAIGyBCiMZckSFwEEEEDASgEKo5XDRtIIIIAAAmUJUBjLkiUuAggggICVAhRGK4eNpBFAAAEEyhKgMJYlS1wEEEAAASsFKIxWDhtJI4AAAgiUJUBhLEuWuAgggAACVgpQGK0cNpJGAAEEEChLgMJYlixxEUAAAQSsFKAwWjlsJI0AAgggUJYAhbEsWeIigAACCFgpQGG0cthIGgEEEECgLAEKY1myxEUAAQQQsFKAwmjlsJE0AggggEBZAhTGsmSJiwACCCBgpQCF0cphI2kEEEAAgbIEKIxlyRIXAQQQQMBKAQqjlcNG0ggggAACZQlQGMuSJS4CCCCAgJUCFEYrh42kEUAAAQTKEqAwliVLXAQQQAABKwUojFYOG0kjgAACCJQlQGEsS5a4CCCAAAJWClAYrRw2kkYAAQQQKEuAwliWLHERQAABBKwUoDBaOWwkjQACCCBQlgCFsSxZ4iKAAAIIWClAYbRy2EgaAQQQQKAsAQpjWbLERQABBBCwUoDCaOWwkTQCCCCAQFkCFMayZImLAAIIIGClAIXRymEjaQQQQACBsgQojGXJEhcBBBBAwEoBCqOVw0bSCCCAAAJlCVAYy5IlLgIIIICAlQIURiuHjaQRQAABBMoSoDCWJUtcBBBAAAErBQZmZmasTJykEUAAAQQQKFrg8ssvl4HnPve5RcclHgIIIIAAAtYKcCrV2qEjcQQQQACBMgQojGWoEhMBBBBAwFoBCqO1Q0fiCCCAAAJlCFAYy1AlJgIIIICAtQIURmuHjsQRQAABBMoQoDCWoUpMBBBAAAFrBSiM1g4diSOAAAIIlCFAYSxDlZgIIIAAeXiRcgAABgVJREFUAtYKDFibOYkjgEBXCvzDP\/xDV\/ar1U698pWvbBjixIkTDdfpxRXWrVuXq9sUxlxcrIwAAu0QuPTSS9vRjDVtPPXUU5lzffWrX5153V5Y8e\/+7u9yd5NTqbnJ2AABBBBAoJsFKIzdPLr0DQEEEEAgtwCFMTcZGyCAAAIIdLMAhbGbR5e+IYAAAgjkFqAw5iZjAwQQsFag8m35ymcn5fhXvh3ugjf\/YTn3dHh2Tz+qXJA\/uWFYVq1a5f0bvv5+eaLSJpG+z8vtK94kH7vQpvYizVAYIyA8RACBbhe4RC5++lF59N8K6GeXFlTnifvlTVesk3\/53bNy7tw579\/U\/SIP9sjdIBTGAp4bhEAAAbsELhtcKU\/NTAsHiAnj5h4p3v\/7n5SX\/vE5+ciNwfLKFXfI7W8OHnfzFIWxm0eXviGAQLLAs4Zk5c+fl69MJ5dG5+lz8vDkpEyqf5\/9ijxZeVqmH56UL1bXd779qEx+8WF5+LOPestm3GWx07PJLXf8XOfCg\/KFJ14rr69TBE\/ePlI7xXrV7\/2V36fq6c\/7P3pHbdm6jxjnQiOnZn\/\/pL+Zd3S6wj9dO7jiDvnrdp2urTMSFMY6OCxCAIHuFfhv17xcLpl5JP6+ont69NEvPCmXvW5URkdHZf01FZk5KzJ0nbu+e1rxSbX8EUeuee3r5HUbXi6XOZfIoLvu+mte1D1YL3mpvLROb2786JR\/ivX8B+XVX\/gz473Ab8qfz\/yGt+zsB6+T83\/6Mb\/QqaL4xlH50nWTtVOz3tGoW0zvuOFv5A1\/5Z+unf6wyJ992CimdXIocxGffFOmLrERQKBzBZwXycuv+a6cOPdtWfWKIE3nx0\/Lj90jxCfdo8CZ6uzKZS8UUeu\/4rty3D1KfNE1o3JZsEn3TX3z6\/J1t1dXpPRs8fN3yPC7v1BdermsrK33Evntd7zJe9R34+vlund+Qr5x3qWr+Eehv\/d\/V7gPaiuLc\/4b8i\/yDXl43Sr5eHX2Rdf+hju1tIeNFMZgjJhCAIEeE6i8aFBWzDzsXojz8nDPFy+TazZe093FL9zj2qPKijfIdVeMykOfE7neeI9Rr6BOfb75nSIfeuKcXC8X5CPX\/4Fe1OTv6+RDM\/fL9UbBFPl8k7GK2YxTqcU4EgUBBKwUuMQ9WhyUpx513yus5l951iXyrMqTMhN9\/1GfQnVPnzpfcd93tLK\/GZJ2Vsjt\/\/u18tAfrhL9PqDaShXEj7rF0rnwdfmXy\/1Trer9yIfVoWWDH7\/YfjF2mrSy8nL57\/JwbH6DcKUv5oixdGIaQACBThaoXLJKrhn8jnzxXPWQRZ0yve5p+eLDD8ukexpQ\/VQuWykrfnxenl71Ou89xUuGzrvLp+V1rxuSF\/63R+Wr7mnX85e9vGveZ+y74X6ZXnG\/3HiDe1HMH\/oGfS9+mxx\/UKRP3i6\/86ej8ubBT0j\/S66T\/5F2vtXfzP+\/W2zf8dd\/JF9\/6XpZ9Unf+fV\/pK56vUHu\/\/w33HbWufP9VS+69j55\/BNLeyq18sMf\/jB0AGv2hWkEEECg3QLqa6f4do2wuvp2jaxfO8W3a4Tt1Ldr5PnaqWc961lu8ecHAQQQQAABBGoCFMYaBRMIIIAAAgio08X8IIAAAggggEBNgMJYo2ACAQQQQAABEa5KZS9AAIGOE1AXm\/DTnIC62ISf1gS4KrU1P7ZGAAEEEOgiAa5K7aLBpCsIIIAAAsUI8B5jMY5EQQABBBDoEgEKY5cMJN1AAAEEEChGgMJYjCNREEAAAQS6RIDC2CUDSTcQQAABBIoRoDAW40gUBBBAAIEuEaAwdslA0g0EEEAAgWIEKIzFOBIFAQQQQKBLBCiMXTKQdAMBBBBAoBiByuzsLN\/HWIwlURBAAAEEukCg0t\/fX3hhdBZeKXc+eIt863dvl8P\/Vnj4LmCnC+0UeN7znidPrdneziZpCwEEOkbArEEVP6uK+u3+U78r7olTx\/3X5\/6r9Lu\/B9xfJRTGjvEgEQRcgec\/\/\/nyH2t3Y4EAAr0osGh0Wr156Kii6P54xVEVQzXtF8VK9ff\/B5mX0BrMWSSfAAAAAElFTkSuQmCC'><\/img> always resulting in a message wondering whether we had the microphone set to &#8220;mute on&#8221;, which wasn&#8217;t the case.  But what was the case, and remedied this problem was to use a <a target=_blank title='USB 2 information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/USB_2.0'>USB 2<\/a> port rather than a <a target=_blank title='USB 3 information from Wikipedia ... thanks' href='https:\/\/en.wikipedia.org\/wiki\/USB_3.0'>USB 3<\/a> port <font size=1> &#8230; in case this happens to you<\/font>.<\/p>\n<p>Other than that, Cortana is pretty cute, and could be a good enough reason on its own to <a target=_blank title='Microsoft FAQ about upgrade to Windows 10' href='https:\/\/support.microsoft.com\/en-us\/help\/12435\/windows-10-upgrade-faq'>upgrade<\/a> to Windows 10 from Windows 7, Windows 8.1, Windows Phone 8.1 or Windows 9 operating systems before Friday, 29th July 2016 which is the cut off day for free upgrades.  Our experience of the upgrade was talked about at <a target=_blank title='Windows 10 Upgrade Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/windows-10-upgrade-primer-tutorial\/'>Windows 10 Upgrade Primer Tutorial<\/a> (and backups were discussed at <a target=_blank title='Windows File History Backup Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/windows-file-history-backup-primer-tutorial\/'>Windows File History Backup Primer Tutorial<\/a>).<\/p>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>Sadly, some days ago saw the passing of <a target=_blank title='Frank Dickens obituary' href='http:\/\/www.telegraph.co.uk\/obituaries\/2016\/07\/11\/frank-dickens-creator-of-bristow-comic-strip--obituary\/'>Frank Dickens<\/a>, the creator of the <i>Bristow<\/i> cartoon series, forever etched on my brain regarding <a target=_blank title=\"The Great Tea Trolley Disaster of '67\" href='https:\/\/www.google.com\/search?q=The+Great+Tea+Trolley+Disaster+of+%E2%80%9967&#038;rlz=1C5CHFA_enAU832AU832&#038;oq=The+Great+Tea+Trolley+Disaster+of+%E2%80%9967&#038;aqs=chrome..69i57j69i64.232j0j4&#038;sourceid=chrome&#038;ie=UTF-8'>The Great Tea Trolley Disaster of &#8217;67<\/a>.   R.I.P.<\/p>\n<hr>\n<p id='wpwmt'>Previous relevant <a target=_blank title='WebEx Presentation with Microphone Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/webex-presentation-with-microphone-tutorial\/'>WebEx Presentation with Microphone Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/WebEx\/webex_microphone.jpg\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WebEx Presentation with Microphone Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/WebEx\/webex_microphone.jpg\" title=\"WebEx Presentation with Microphone Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WebEx Presentation with Microphone Tutorial<\/p><\/div>\n<p>We&#8217;ve been doing some more <a target=_blank title='WebEx video conferencing' href='https:\/\/www.webex.com\/'>WebEx<\/a> (by <a target=_blank title='Cisco' href='http:\/\/www.cisco.com'>Cisco<\/a>) lately, and realised, at least with using a MacBook Pro laptop, we needed to invest in a microphone, to be heard, as the inbuilt microphone systems were not up to it.<\/p>\n<p>We opted for a USB connected microphone brand called <a target=_blank title='MXL Tempo microphone' href='http:\/\/www.mxlmics.com\/microphones\/usb\/Tempo\/'>MXL Tempo<\/a>, sold here in Australia, and have found it to be good, especially mounted on the stand provided &#8230; well, no complaints, anyway?!  Where it has a 1\/8&#8243; (3.5mm) Headphone Jack we plugged in our own speakers, though you could use headphones here as well.<\/p>\n<p>Of course we&#8217;ll also be constructing a garage, and buying a guitar, and calling on <strike>&#8220;tree fellers&#8221;<\/strike> <i>karaoke backing track of Peter, Paul and Mary<\/i> to complete the picture of this week&#8217;s project &#8230; getting the new microphone to <strike>make breakfast in the morning before you even knew you needed breakfast<\/strike> get me on <a target=_blank title='The Voice' href='http:\/\/www.9jumpin.com.au\/show\/the-voice\/'>The Voice<\/a><strike>s<\/strike>.<\/p>\n<p>In the WebEx &#8220;Audio Connection&#8221; menu via &#8220;Call Using Computer&#8221; option have both input and output audio be handled by &#8220;USB audio CODEC&#8221; (if they are options &#8230; if not, there is a hardware (perhaps configuration) problem with your audio and microphone connection) as you can see at today&#8217;s <a target=_blank title='Tutorial picture' href='http:\/\/www.rjmprogramming.com.au\/WebEx\/webex_microphone.jpg'>tutorial picture<\/a>.  So long as you succeed and have the USB connected, the audio connection will default to this arrangement for the next time.  Cute, huh?!<\/p>\n<p>To make it permanent that the MXL Tempo microphone arrangement is the default device for recordings &#8230;<\/p>\n<ol>\n<li>click on <i>System Preferences<\/i> off the Apple menu<\/li>\n<li>click the Sound option<\/li>\n<li>click the Output tab<\/li>\n<li>pick USB audio CODEC<\/li>\n<li>if you intend using speakers or headphones connected off this microphone from its 1\/8&#8243; (3.5mm) Headphone Jack, click the Input tab<\/li>\n<li>pick USB audio CODEC<\/li>\n<\/ol>\n<p>Being heard never seemed so easy!<\/p>\n<hr>\n<p id='wppt'>Previous relevant <a target=_blank title='WebEx Prerecording Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/WebEx Prerecording Primer Tutorial\/'>WebEx Prerecording Primer Tutorial<\/a> is shown below.<\/p>\n<div style=\"width: 230px\" class=\"wp-caption alignnone\"><a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/WebEx\/\"><img decoding=\"async\" style=\"border: 15px solid pink;\" alt=\"WebEx Prerecording Primer Tutorial\" src=\"http:\/\/www.rjmprogramming.com.au\/WebEx\/webex.jpg\" title=\"WebEx Prerecording Primer Tutorial\"  style=\"float:left;\"   \/><\/a><p class=\"wp-caption-text\">WebEx Prerecording Primer Tutorial<\/p><\/div>\n<p>We&#8217;ve been trying out <a target=_blank title='WebEx video conferencing' href='https:\/\/www.webex.com\/'>WebEx<\/a> (by <a target=_blank title='Cisco' href='http:\/\/www.cisco.com'>Cisco<\/a>) prerecording as a video conferencing idea as an alternative to &#8230;<\/p>\n<ul>\n<li><a target=_blank href='http:\/\/www.gotomeeting.com\/'>GoToMeeting<\/a> (by <a target=_blank title='Citrix' href='http:\/\/www.citrix.com'>Citrix<\/a>) we talked about with <a target=_blank title='GoToMeeting Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/gotomeeting-primer-tutorial\/'>GoToMeeting Primer Tutorial<\/a><\/li>\n<li><a target=_blank href='http:\/\/www.skype.com'>Skype<\/a> (by Skype and now <a target=_blank href='http:\/\/www.microsoft.com\/'>Microsoft<\/a>) we talked about with <a target=_blank title='Skype Primer Tutorial' href='https:\/\/www.rjmprogramming.com.au\/ITblog\/skype-primer-tutorial\/'>Skype Primer Tutorial<\/a><\/li>\n<\/ul>\n<p> &#8230; regarding video conferencing products we&#8217;ve tried at this blog.<\/p>\n<p>Have to say, WebEx is great, even with respect to the &#8220;wide eyed and bushy tailed&#8221; reaction &#8220;this little black duck&#8221; has to all these networky communicaty ideas on the net (at least we spelt &#8220;net&#8221; correctly).<\/p>\n<p>Have to thank my wife, Maree, for her expertise and the facilities her company, <a target=_blank title='Thomson Reuters home page' href='http:\/\/thomsonreuters.com\/'>Thomson Reuters<\/a>, supplies for the serving of WebEx recordings &#8230; thanks everyone.  Have been assured they are periodically deleted, and my lame impersonations of the old &#8220;ducks on the wall&#8221; can rest in peace shortly.<\/p>\n<p>And so, we have a <a target=_blank href=\"http:\/\/www.rjmprogramming.com.au\/WebEx\/\" title='Click picture'>slideshow<\/a> starting with a WebEx email link to join a meeting, and we pan down the email to show you other WebEx functionalities, such as adding a Calendar reference to the meeting time, and though we haven&#8217;t shown you detail here, rest assured it handles timezone scenarios very well, unless you lie about living in Antarctica, that is<font size=1> &#8230; sorry, scientists in Antarctica reading this blog posting &#8230; all 237 of you<\/font>.<\/p>\n<p>During this &#8220;earlier than today exploration of WebEx&#8221; session the necessary software installs just happened for this MacBook Pro Mac OS X laptop as if we were shelling peas<font size=1> &#8230; it&#8217;s always good to have some handy when installing any software<\/font>.  So we won&#8217;t show you this unless we deem it essential at a later date.  You can perhaps do as I did, and ask a real WebEx user invite you to a meeting, to set yourself up.  In fact, today&#8217;s session meeting creation time you may notice is well in the past from that earlier introductory learning session Maree and I had, and you can bring back up that old email, and resurrect that meeting again and again, if you like<font size=1> &#8230; am not sure if there is an expiry date on this too, like with server stored WebEx prerecordings<\/font>.<\/p>\n<p>So also rest assured, WebEx handles &#8230;<\/p>\n<ul>\n<li>video via webcam on your device<\/li>\n<li>audio via microphone on your device (&#8220;Use Computer&#8221;) or via a phone line<\/li>\n<li>the synchronization of the two above<\/li>\n<li>mobile devices<\/li>\n<\/ul>\n<p><b><i>Did you know?<\/i><\/b><\/p>\n<p>A .ics extension file, as you can see being used as an email attachment file extension in <img src='http:\/\/www.rjmprogramming.com.au\/WebEx\/webexte.jpg' title='Extension .ics'><\/img> is, as explained in <a target=_blank title='https:\/\/www.google.com.au\/#q=ics+file&#038;gws_rd=cr'>this link<\/a>&#8216;s <a target=_blank title='Useful link' href='http:\/\/www.online-convert.com\/file-format\/ics'>sublink<\/a> &#8230;<\/p>\n<blockquote><p>\nICS is a global format for calendar files widely being utilized by various calendar and email programs including Google Calendar, Apple iCal, and Microsoft Outlook. These files enable users to share and publish information directly from their calendars over email or via uploading it to the world wide web.\n<\/p><\/blockquote>\n<p> &#8230; as helping interface meetings to online calendar appointments.  Cute, huh?!<\/p>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d21840' onclick='var dv=document.getElementById(\"d21840\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/video-conferencing\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d21840' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d21991' onclick='var dv=document.getElementById(\"d21991\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/microphone\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d21991' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d23592' onclick='var dv=document.getElementById(\"d23592\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/windows\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d23592' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d23627' onclick='var dv=document.getElementById(\"d23627\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/ipad\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d23627' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d23722' onclick='var dv=document.getElementById(\"d23722\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/audio\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d23722' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d26045' onclick='var dv=document.getElementById(\"d26045\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/ipad\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d26045' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d54794' onclick='var dv=document.getElementById(\"d54794\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/siri\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d54794' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d54811' onclick='var dv=document.getElementById(\"d54811\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/spotify\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d54811' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d54837' onclick='var dv=document.getElementById(\"d54837\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/camera\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d54837' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56439' onclick='var dv=document.getElementById(\"d56439\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/audio\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56439' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n<hr>\n<p>If this was interesting you may be interested in <a title='Click here to see topics in which you might be interested' href='#d56450' onclick='var dv=document.getElementById(\"d56450\"); dv.innerHTML = \"&lt;iframe width=670 height=600 src=\" + \"https:\/\/www.rjmprogramming.com.au\/ITblog\/tag\/voice\" + \"&gt;&lt;\/iframe&gt;\"; dv.style.display = \"block\";'>this<\/a> too.<\/p>\n<div id='d56450' style='display: none; border-left: 2px solid green; border-top: 2px solid green;'><\/div>\n","protected":false},"excerpt":{"rendered":"<p>We want more ways for the &#8220;caller HTML&#8221; and the &#8220;external called Javascript&#8221; to co-operate, on top of the quite rigid and limited rules of yesterday&#8217;s Webpage macOS Say Audio Commentary Tutorial, and thought about &#8220;ways to add intelligence&#8221; to &hellip; <a href=\"https:\/\/www.rjmprogramming.com.au\/ITblog\/webpage-macos-say-audio-commentary-personalization-tutorial\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,14,29,37],"tags":[103,112,113,233,234,4033,290,4034,1750,1549,409,1664,3981,576,624,652,2178,744,919,932,997,2350,1258,1319,3739,2648,1418],"class_list":["post-56450","post","type-post","status-publish","format-standard","hentry","category-elearning","category-event-driven-programming","category-operating-system","category-tutorials","tag-array","tag-attribute","tag-audio","tag-command","tag-command-line","tag-commentary","tag-data","tag-data-personalization","tag-document-root","tag-element","tag-external-javascript","tag-global","tag-global-data-attribute","tag-html","tag-intranet","tag-javascript","tag-macos","tag-mamp","tag-personalization","tag-php","tag-programming","tag-say","tag-text-to-speech","tag-tutorial","tag-typeof","tag-voice","tag-webpage"],"_links":{"self":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/56450"}],"collection":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/comments?post=56450"}],"version-history":[{"count":5,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/56450\/revisions"}],"predecessor-version":[{"id":59026,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/posts\/56450\/revisions\/59026"}],"wp:attachment":[{"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/media?parent=56450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/categories?post=56450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rjmprogramming.com.au\/ITblog\/wp-json\/wp\/v2\/tags?post=56450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}