Make WordPress Core

Ticket #34121: 34121.diff

File 34121.diff, 117.1 KB (added by miqrogroove, 11 years ago)
  • src/wp-includes/formatting.php

     
    219219        preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20]++)@', $text, $matches );
    220220        $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
    221221        $found_shortcodes = ! empty( $tagnames );
    222         if ( $found_shortcodes ) {
    223                 $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
    224                 $tagregexp = "(?:$tagregexp)(?![\\w-])"; // Excerpt of get_shortcode_regex().
    225                 $shortcode_regex =
    226                           '\['              // Find start of shortcode.
    227                         . '[\/\[]?'         // Shortcodes may begin with [/ or [[
    228                         . $tagregexp        // Only match registered shortcodes, because performance.
    229                         . '(?:'
    230                         .     '[^\[\]<>]+'  // Shortcodes do not contain other shortcodes. Quantifier critical.
    231                         . '|'
    232                         .     '<[^\[\]>]*>' // HTML elements permitted. Prevents matching ] before >.
    233                         . ')*+'             // Possessive critical.
    234                         . '\]'              // Find end of shortcode.
    235                         . '\]?';            // Shortcodes may end with ]]
    236         }
     222        $shortcode_regex = $found_shortcodes ? _get_wptexturize_shortcode_regex( $tagnames ) : '';
     223        $regex = _get_wptexturize_split_regex( $shortcode_regex );
    237224
    238         $comment_regex =
    239                   '!'           // Start of comment, after the <.
    240                 . '(?:'         // Unroll the loop: Consume everything until --> is found.
    241                 .     '-(?!->)' // Dash not followed by end of comment.
    242                 .     '[^\-]*+' // Consume non-dashes.
    243                 . ')*+'         // Loop possessively.
    244                 . '(?:-->)?';   // End of comment. If not found, match all input.
    245 
    246         $html_regex =                    // Needs replaced with wp_html_split() per Shortcode API Roadmap.
    247                   '<'                // Find start of element.
    248                 . '(?(?=!--)'        // Is this a comment?
    249                 .     $comment_regex // Find end of comment.
    250                 . '|'
    251                 .     '[^>]*>?'      // Find end of element. If not found, match all input.
    252                 . ')';
    253 
    254         if ( $found_shortcodes ) {
    255                 $regex = '/(' . $html_regex . '|' . $shortcode_regex . ')/s';
    256         } else {
    257                 $regex = '/(' . $html_regex . ')/s';
    258         }
    259 
    260225        $textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
    261226
    262227        foreach ( $textarr as &$curl ) {
     
    264229                $first = $curl[0];
    265230                if ( '<' === $first ) {
    266231                        if ( '<!--' === substr( $curl, 0, 4 ) ) {
    267                                 // This is an HTML comment delimeter.
     232                                // This is an HTML comment delimiter.
    268233                                continue;
    269234                        } else {
    270235                                // This is an HTML element delimiter.
     
    615580 * @return array The formatted text.
    616581 */
    617582function wp_html_split( $input ) {
     583        return preg_split( get_html_split_regex(), $input, -1, PREG_SPLIT_DELIM_CAPTURE );
     584}
     585
     586/**
     587 * Retrieve the regular expression for an HTML element.
     588 *
     589 * @since 4.4.0
     590 *
     591 * @return string The regular expression
     592 */
     593function get_html_split_regex() {
    618594        static $regex;
    619595
    620596        if ( ! isset( $regex ) ) {
     
    635611                        . ')*+'         // Loop possessively.
    636612                        . '(?:]]>)?';   // End of comment. If not found, match all input.
    637613
     614                $escaped =
     615                          '(?='           // Is the element escaped?
     616                        .    '!--'
     617                        . '|'
     618                        .    '!\[CDATA\['
     619                        . ')'
     620                        . '(?(?=!-)'      // If yes, which type?
     621                        .     $comments
     622                        . '|'
     623                        .     $cdata
     624                        . ')';
     625
    638626                $regex =
    639627                          '/('              // Capture the entire match.
    640628                        .     '<'           // Find start of element.
    641                         .     '(?(?=!--)'   // Is this a comment?
    642                         .         $comments // Find end of comment.
    643                         .     '|'
    644                         .         '(?(?=!\[CDATA\[)' // Is this a comment?
    645                         .             $cdata // Find end of comment.
    646                         .         '|'
    647                         .             '[^>]*>?' // Find end of element. If not found, match all input.
    648                         .         ')'
     629                        .     '(?'          // Conditional expression follows.
     630                        .         $escaped  // Find end of escaped element.
     631                        .     '|'           // ... else ...
     632                        .         '[^>]*>?' // Find end of normal element.
    649633                        .     ')'
    650                         . ')/s';
     634                        . ')/';
    651635        }
    652636
    653         return preg_split( $regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE );
     637        return $regex;
    654638}
    655639
    656640/**
     641 * Retrieve the combined regular expression for HTML and shortcodes.
     642 *
     643 * @access private
     644 * @ignore
     645 * @internal This function will be removed in 4.5.0 per Shortcode API Roadmap.
     646 * @since 4.4.0
     647 *
     648 * @param string $shortcode_regex The result from _get_wptexturize_shortcode_regex().  Optional.
     649 * @return string The regular expression
     650 */
     651function _get_wptexturize_split_regex( $shortcode_regex = '' ) {
     652        static $html_regex;
     653
     654        if ( ! isset( $html_regex ) ) {
     655                $comment_regex =
     656                          '!'           // Start of comment, after the <.
     657                        . '(?:'         // Unroll the loop: Consume everything until --> is found.
     658                        .     '-(?!->)' // Dash not followed by end of comment.
     659                        .     '[^\-]*+' // Consume non-dashes.
     660                        . ')*+'         // Loop possessively.
     661                        . '(?:-->)?';   // End of comment. If not found, match all input.
     662
     663                $html_regex =                    // Needs replaced with wp_html_split() per Shortcode API Roadmap.
     664                          '<'                // Find start of element.
     665                        . '(?(?=!--)'        // Is this a comment?
     666                        .     $comment_regex // Find end of comment.
     667                        . '|'
     668                        .     '[^>]*>?'      // Find end of element. If not found, match all input.
     669                        . ')';
     670        }
     671
     672        if ( empty( $shortcode_regex ) ) {
     673                $regex = '/(' . $html_regex . ')/';
     674        } else {
     675                $regex = '/(' . $html_regex . '|' . $shortcode_regex . ')/';
     676        }
     677
     678        return $regex;
     679}
     680
     681/**
     682 * Retrieve the regular expression for shortcodes.
     683 *
     684 * @access private
     685 * @ignore
     686 * @internal This function will be removed in 4.5.0 per Shortcode API Roadmap.
     687 * @since 4.4.0
     688 *
     689 * @param array $tagnames List of shortcodes to find.
     690 * @return string The regular expression
     691 */
     692function _get_wptexturize_shortcode_regex( $tagnames ) {
     693        $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
     694        $tagregexp = "(?:$tagregexp)(?=[\\s\\]\\/])"; // Excerpt of get_shortcode_regex().
     695        $regex =
     696                  '\['              // Find start of shortcode.
     697                . '[\/\[]?'         // Shortcodes may begin with [/ or [[
     698                . $tagregexp        // Only match registered shortcodes, because performance.
     699                . '(?:'
     700                .     '[^\[\]<>]+'  // Shortcodes do not contain other shortcodes. Quantifier critical.
     701                . '|'
     702                .     '<[^\[\]>]*>' // HTML elements permitted. Prevents matching ] before >.
     703                . ')*+'             // Possessive critical.
     704                . '\]'              // Find end of shortcode.
     705                . '\]?';            // Shortcodes may end with ]]
     706
     707        return $regex;
     708}
     709
     710/**
    657711 * Replace characters or phrases within HTML elements only.
    658712 *
    659713 * @since 4.2.3
     
    768822                . ')'
    769823                . '(?:' . $spaces . ')*+'            // optional trailing whitespace
    770824                . '<\\/p>'                           // closing paragraph
    771                 . '/s';
     825                . '/';
    772826
    773827        return preg_replace( $pattern, '$1', $pee );
    774828}
  • src/wp-includes/shortcodes.php

     
    168168        }
    169169
    170170        if ( shortcode_exists( $tag ) ) {
    171                 preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER );
     171                preg_match_all( '/' . get_shortcode_regex() . '/', $content, $matches, PREG_SET_ORDER );
    172172                if ( empty( $matches ) )
    173173                        return false;
    174174
     
    219219        $content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames );
    220220
    221221        $pattern = get_shortcode_regex( $tagnames );
    222         $content = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $content );
     222        $content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content );
    223223
    224224        // Always restore square braces so we don't break things like <!--[if IE ]>
    225225        $content = unescape_invalid_shortcodes( $content );
     
    378378                if ( false === $attributes ) {
    379379                        // Some plugins are doing things like [name] <[email]>.
    380380                        if ( 1 === preg_match( '%^<\s*\[\[?[^\[\]]+\]%', $element ) ) {
    381                                 $element = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $element );
     381                                $element = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $element );
    382382                        }
    383383
    384384                        // Looks like we found some crazy unfiltered HTML.  Skipping it for sanity.
     
    407407                                // In this specific situation we assume KSES did not run because the input
    408408                                // was written by an administrator, so we should avoid changing the output
    409409                                // and we do not need to run KSES here.
    410                                 $attr = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $attr );
     410                                $attr = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $attr );
    411411                        } else {
    412412                                // $attr like 'name = "[shortcode]"' or "name = '[shortcode]'"
    413413                                // We do not know if $content was unfiltered. Assume KSES ran before shortcodes.
    414414                                $count = 0;
    415                                 $new_attr = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $attr, -1, $count );
     415                                $new_attr = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $attr, -1, $count );
    416416                                if ( $count > 0 ) {
    417417                                        // Sanitize the shortcode output using KSES.
    418418                                        $new_attr = wp_kses_one_attr( $new_attr, $elname );
     
    572572        $content = do_shortcodes_in_html_tags( $content, true, $tagnames );
    573573
    574574        $pattern = get_shortcode_regex( $tagnames );
    575         $content = preg_replace_callback( "/$pattern/s", 'strip_shortcode_tag', $content );
     575        $content = preg_replace_callback( "/$pattern/", 'strip_shortcode_tag', $content );
    576576
    577577        // Always restore square braces so we don't break things like <!--[if IE ]>
    578578        $content = unescape_invalid_shortcodes( $content );
  • tests/phpunit/data/formatting/whole-posts.php

     
     1<?php
     2
     3function data_whole_posts() {
     4        return array(
     5
     6/* DIVIDER */
     7
     8array('[Lorem ipsum dolor sit amet, quo id ignota repudiare, ius iracundia rationibus an, ea natum causae epicuri has. His porro deleniti cu. Eam ut quem alia reprimique. Quas tollit tincidunt his eu, nam ex cibo illud cetero. In perpetua dignissim mel, te utinam vituperata per.
     9
     10 Erat tibique hendrerit et duo, qui iriure tacimates ne, per eu solum admodum ocurreret. Cu ius utinam equidem saperet, mei tation nostrud scripserit ne. Sea et vide natum. Homero constituto eu est, quo eu veniam omnium feugait. Vel enim commune no.
     11
     12 Option verterem eum te, quot discere neglegentur nam at. No rebum convenire disputationi pro, libris possim eruditi id est. Unum ubique scaevola sed ad. Quas decore periculis ius eu, quod nibh quando ea ius. Ea essent omnesque mei, possit verear aperiri ea mel, mea fabellas urbanitas pertinacia ei. Maiorum sensibus at duo, eum ea veritus splendide.
     13
     14 Ex quo noster alterum sanctus. Vel ei blandit adversarium, ad iriure scripta eruditi nam. Quo semper noluisse consectetuer te. Probatus mediocritatem necessitatibus ne pro. Vix ne consul soluta dissentiet.
     15
     16 Vix augue vivendum sadipscing ei, diam elaboraret scribentur no mea. Te pri nullam reprehendunt, ornatus maiorum ne qui. Et mei accusam singulis. Et est intellegat posidonium, no usu purto bonorum facilisi. Saperet cotidieque eu mel.
     17
     18 Nonumy pericula vis id, illum nobis aliquando cum ei, altera aeterno mediocritatem pro ea. At duo quaeque dolorem. Vidit tantas ea vim, quis feugiat delenit vix ad, te per choro omnesque. Eum id duis facilisis. Purto intellegat duo no, ne ipsum praesent moderatius vis, et meliore scriptorem vim.
     19
     20 Bonorum admodum intellegam <!--te sed, eum erant placerat gubergren at, summo iudico aeterno mel an. Eu malis apeirian interpretaris eum, possim sanctus eu quo. Quo utinam persius ut, quo exerci dolores iudicabit ex. Ferri audire expetenda ex vis, persius signiferumque sit id.
     21
     22 Nobis scaevola qualisque vim ne, amet habemus no nec. Ex sea veri posse inani. Pro id quando persecuti, te nec utroque urbanitas adipiscing, an odio munere legere his. Veritus lucilius nam no, usu option appetere detraxit cu. Eos in hinc inciderint, nec in recteque corrumpit, dicat assentior honestatis at duo.
     23
     24 Atqui nemore propriae ea vel, duo an possim democritum, qui ad omnium tritani partiendo. Propriae appellantur ea per, est cu rebum justo utamur. Eruditi abhorreant ullamcorper an cum. Tota diceret ei mea, modus invidunt ad sea. Quo et prima debet eirmod, nisl inciderint qui ut. Te cum natum verterem vulputate, omittam rationibus reformidans vix ex.
     25
     26 Virtute posidonium at has, te epicuri eleifend adversarium eum. Esse putant iracundia ad sea, ei sed integre postulant expetenda, ad vix aperiri electram. Cu vel meis omnes expetendis, ei debet oblique molestie mea, ad vix nibh falli zril. Id vel quod erat eirmod, modus reformidans ei sea, an has agam aperiri.
     27
     28 Pro an wisi inimicus, suas interpretaris pri ex. Id sea erat aliquip. No pri falli sanctus, et adipisci vituperata pri, cu salutatus necessitatibus ius. Sed veri viderer ad. Liber veritus mediocrem ad eos, indoctum quaerendum instructior eam ex, te his graeci latine intellegebat. Duo prima erant feugiat ut.
     29
     30 In vis saepe vivendum nominati. Ad eam quis legere adversarium, hinc summo ea mei. Usu brute neglegentur et. Per no alienum contentiones definitionem, epicurei sententiae no eum. Omnium copiosae id cum, iisque denique inimicus ad sed, pri in essent iisque. Et essent intellegat incorrupte nam, ex nusquam conceptam ius.
     31
     32 Pro consulatu dissentiet no,] amet reque delicatissimi duo ex, cu mei nulla zril quodsi. Novum rationibus reprimique cu his. Mutat aperiam te vel. Habemus hendrerit sea ad, eum etiam dignissim id. Usu definiebas dissentiet cu, at iriure regione duo.
     33
     34 Eu sea simul noluisse deserunt, insolens intellegat ut sea. Ex eam vitae deseruisse. Et mea congue noster admodum, ad qui urbanitas definitiones. Nihil graece vivendum nam ut, mea ut vitae ancillae repudiandae, eos an oratio scriptorem. Eu mutat legimus inimicus vel, id sententiae inciderint sit. Dico appareat vim id, no vim possit volumus, movet audiam discere ut nec.
     35
     36 Viris inimicus persequeris vis ad, nulla deterruisset ex est. Vim ocurreret maluisset scribentur ut, lorem liberavisse cum at, at causae ceteros tractatos eos. Ex ius recteque eloquentiam, sed cetero tritani ex. Aperiam molestie ex sed, melius vocent salutandi vel ne. Sed ut iuvaret officiis tractatos. Luptatum quaestio vel ut, posse dissentias cu sed, mei cu habeo invidunt vituperata.
     37
     38 Sit alia persecuti cu, an ferri petentium vim. Ut ius adhuc paulo consulatu. Duis adversarium in his, at mel nostro perpetua moderatius. Id has maiorum adipisci, ferri affert vel cu, est tempor docendi ei. Autem ipsum vim at, cu luptatum apeirian quo, est aliquip eruditi eu. Eum epicurei sensibus et, et vis veri tractatos, quas etiam vel ut. Vide corrumpit imperdiet at mei.
     39
     40 Quaestio vulputate cu his, usu at facete eirmod percipitur. Usu vivendum electram reprimique eu. Vis no consequat expetendis, eos id velit aperiam detracto. Eu summo consequuntur eum, minimum praesent partiendo id est.
     41
     42 Tota offendit sea et, ne vim dicam admodum blandit. No vix quas nusquam. Putant scripta fierent mei ea. Eum ei putant persius probatus, quo ea wisi electram.
     43
     44 Eu illud definiebas honestatis sit. Eam exerci deseruisse ei, ex cum erant tacimates. Enim eros id vel, vidisse abhorreant cu eum. Et saperet appellantur est, eum esse soluta recusabo ad. Eam malis sensibus ea.
     45
     46 Exerci scripta at est. His ei nostrum perfecto, accumsan eligendi tincidunt an eum. Ius tempor aperiam ea, mei autem lorem eu. Vis duis modus ornatus no, alia malis ornatus mea et, ea eros probatus qui.
     47
     48 Mazim assentior mel te, rebum periculis constituam nec ut. In ferri admodum deleniti eum, nam te quas nominati appellantur. Est at erat pertinax, no sit nulla placerat. Munere euripidis ad has.
     49
     50 Magna graeco oblique vel ea, no movet aliquando mea. Eum no sadipscing delicatissimi, doctus consequuntur eu sed. Sed in persius eleifend, regione euismod no per. Ei pri vivendum gubergren, vix at eligendi invenire aliquando, brute malorum id usu. Cum tantas prodesset consequuntur ei, eum liberavisse delicatissimi vituperatoribus at.
     51
     52 Cu bonorum graecis ius. Duo id ancillae probatus. Tota latine pri an. Cum ei iudico semper. Eum in blandit voluptaria.
     53
     54 Illud debet vitae ex vis numquam.'),
     55 
     56/* DIVIDER */
     57
     58// based on https://core.trac.wordpress.org/attachment/ticket/29557/ChatTranscript.txt
     59
     60array('hello!-- world. [caption arg1="Aenean consectetur ipsum ante, vel egestas enim tincidunt quis. Pellentesque vitae congue neque, vel mattis ante. In vitae tempus nunc. Etiam adipiscing enim sed condimentum ultrices. Aenean consectetur ipsum ante, vel egestas enim tincidunt qu. In vitae tempus nunc. In vitaentbnbsdgsdsdgsdhsdhdsdhdsh Aenean consectetur ipsum ante, vel egestas enim tincidunt quis. Pellentesque vitae congue neque, vel mattis ante. In vitae tempus nunc. Etiam adipiscing enim sed condimentum ultrices. Aenean consectetur ipsum ante, vel egestas enim tincidunt qu. In vitae tempus nunc. In vitaentbnbsdgsdsdgsdhsdhdsdhdsh" /] hello world.
     61
     62Chat Transcript for Apple event on October 22, 2013. Edited slightly for grammar, capitalization, and punctuation. It\'s a little hard to follow along at times, but I\'m mostly posting for posterity\'s sake. Or whatever.
     63
     64<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     65<p class="triangle-right left">ARE YOU READY PHIL!?</p>
     66<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     67<p class="triangle-right right">Music is streaming
     68Tom Merritt on twitter: Apple has made their first announcement "Please turn electronic devices to silent." Does this meet expectations?
     69I AM READY!
     70"It\'s all better now" does that mean something?more</p>
     71<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     72<p class="triangle-right left">I WISH I HAD MONEY TO GIVE APPLE!</p>
     73<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     74<p class="triangle-right right">IT STARTED</p>
     75<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     76<p class="triangle-right left">Apple has patented the period!</p>
     77<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     78<p class="triangle-right right">Hi Aaron!
     79You can complain now!</p>
     80<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     81<p class="triangle-right left">Finally!
     82Two of you!</p>-
     83<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     84<p class="triangle-right lefttwo">I\'ve seen this video before. It\'s good but I really wanted a new one.</p>
     85<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     86<p class="triangle-right right">OH MY GO.... oh it\'s just Tim Cook</p>
     87<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     88<p class="triangle-right left">They probably paid more for that video than Phil’s yearly salary.</p>
     89<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     90<p class="triangle-right lefttwo">Flower petals!</p>
     91<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     92<p class="triangle-right right">Thanks Bob.</p>
     93<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     94<p class="triangle-right left">BRING BACK THE FLOWER POWER IMACS!</p>
     95<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     96<p class="triangle-right right">PRODUCTS HE SAID PRODUCTS PLURAL!
     97But first, I have a lot of large numbers to show you!</p>
     98<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     99<p class="triangle-right left">Take a drink!</p>
     100<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     101<p class="triangle-right lefttwo">Amazing 5C. Which no one is buying.</p>
     102<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     103<p class="triangle-right right">STUNNING</p>
     104<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     105<p class="triangle-right left">Should be “formerly of the Wall Street Journal”.
     106I also hope they bring up Pogue.</p>
     107<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     108<p class="triangle-right right">Hey made a new video for you Aaron!</p>
     109<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     110<p class="triangle-right left">They should just play an old video.</p>
     111<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     112<p class="triangle-right lefttwo">Slide called video before the video.</p>
     113<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     114<p class="triangle-right left">I want a glass dodecahedron.</p>
     115<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     116<p class="triangle-right right">Look at all these happy people who are touching our products? Don\'t you want to be happy?</p>
     117<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     118<p class="triangle-right lefttwo">This better all be shot on an iPhone</p>
     119<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     120<p class="triangle-right left">“Shot on Film”</p>
     121<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     122<p class="triangle-right right">The Chinese are a happy people, when you give them iPhones</p>
     123<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     124<p class="triangle-right left">I’d be happy too if I had the money to blow on an unsubsidized iPhone 5s.
     125Or eight.</p>
     126<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     127<p class="triangle-right right">Look, this guy bought 5 of them!</p>
     128<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     129<p class="triangle-right left">That guy bought up cases ... I hope the employees laughed at him.</p>
     130<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     131<p class="triangle-right right">He CAN speak for everyone at apple.</p>
     132<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     133<p class="triangle-right lefttwo">The cut at the end to the logo tag was awkward.</p>
     134<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     135<p class="triangle-right right">Hundreds of millions of customers.</p>
     136<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     137<p class="triangle-right left">“Formerly of the New York Times”</p>
     138<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     139<p class="triangle-right right">MORE BIG NUMBERS!!</p>
     140<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     141<p class="triangle-right left">I wish they put all of the zeroes on the screen.
     142Then we could add up all of the zeroes.
     143That is pretty stunning. We still have Windows XP running here.</p>
     144<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     145<p class="triangle-right lefttwo">Apple should be running the gov healthcare website.</p>
     146<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     147<p class="triangle-right left">No one wants to run that piece of junk.</p>
     148<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     149<p class="triangle-right right">He seems a little under prepared... is he excited or did he only practice this 12 times?</p>
     150<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     151<p class="triangle-right left">Apple is hopefully smart enough to stay out of government.
     152“Thar be dragons!”</p>
     153<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     154<p class="triangle-right right">"After we paid him a hundred thousand dollars to say that..."</p>
     155<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     156<p class="triangle-right left">I’d do it for half that.</p>
     157<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     158<p class="triangle-right right">ANOTHER BIG NUMBER!</p>
     159<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     160<p class="triangle-right left">Not enough zeroes.</p>
     161<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     162<p class="triangle-right right">A SINGLE DIGIT BIG NUMBER!</p>
     163<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     164<p class="triangle-right left">There we go ... nine zeroes!</p>
     165<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     166<p class="triangle-right right">6 Zeros!
     16710 Zeroes!
     168STAGGERING!</p>
     169<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     170<p class="triangle-right left">Personally, I love the fact that Apple is thumbing their nose at all of the graphic designers out there by continuing to use those icons.</p>
     171<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     172<p class="triangle-right right">9 more zeroes!
     173Phenomenal!</p>
     174<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     175<p class="triangle-right left">Take a drink for each zero?</p>
     176<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     177<p class="triangle-right lefttwo">Can I get checks with the Apple logo on them? For all my apple purchases...</p>
     178<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     179<p class="triangle-right left">How soon until you die of alcohol poisoning?
     180LOL</p>
     181<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     182<p class="triangle-right right">Dead</p>
     183<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     184<p class="triangle-right left">I bet Tim has it.
     185And we’re giving Mavericks away for free today! Sorry Siracusa!</p>
     186<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     187<p class="triangle-right right">Was Tim around at the beginning? How does he know that that has always been the single purpose?</p>
     188<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     189<p class="triangle-right left">Heh.
     190I think Steve probably left him a note in his desk.</p>
     191<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     192<p class="triangle-right lefttwo">What\'s wrong with the slides?</p>
     193<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     194<p class="triangle-right right">Ooooo.... competition! Take a drink.</p>
     195<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     196<p class="triangle-right left">“Dear Tim, this is what Apple is about.”</p>
     197<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     198<p class="triangle-right right">I\'d hit that.</p>
     199<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     200<p class="triangle-right lefttwo">Lots if weird shapes dimming over the slides</p>
     201<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     202<p class="triangle-right right">Its a feature.</p>
     203<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     204<p class="triangle-right left">A feabug!
     205YES!
     206CRAIG!</p>
     207<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     208<p class="triangle-right right">YAY CRAIG!!! Who\'s Craig?
     209HAIR FORCE ONE!!</p>
     210<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     211<p class="triangle-right lefttwo">10 10</p>
     212<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     213<p class="triangle-right left">I like the fact that he owns up to the fact that his hair is greying.
     214He’s like “I have grey hair ... so I’m going to have a ton of it.”</p>
     215<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     216<p class="triangle-right lefttwo">Smooth the Mac experience.</p>
     217<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     218<p class="triangle-right right">It looks more bronze today... did he go gold?</p>
     219<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     220<p class="triangle-right left">Hhmm.
     221Maybe.
     222Hanging out with Jony.</p>
     223<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     224<p class="triangle-right right">Wait... what?
     225LOL
     226My door is open Craig! My door is open!</p>
     227<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     228<p class="triangle-right left">Oh Craig, I was on the Apple Campus when he did his first event and he was NERVOUS.</p>
     229<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     230<p class="triangle-right right">He likes to talk with hand motions.</p>
     231<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     232<p class="triangle-right lefttwo">Run ALL the apps!</p>
     233<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     234<p class="triangle-right right">GRADIENTS ON EVERYTHING!
     235Whoa! That\'s a small number!</p>
     236<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     237<p class="triangle-right left">I love it.</p>
     238<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     239<p class="triangle-right right">AND NOW ITS A BIG NUMBER AGAIN!</p>
     240<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     241<p class="triangle-right left">Wait, where are we. Someone brought me a cable that looks like S-Video to USB ... which is basically impossible.</p>
     242<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     243<p class="triangle-right right">LOL
     244Seems legit.</p>
     245<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     246<p class="triangle-right left">They love their “x”s.</p>
     247<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     248<p class="triangle-right right">Yay! updates to a browser I don\'t use!
     249You can play tag in the finder!</p>
     250<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     251<p class="triangle-right left">Display-handling is much better.
     252Ah, I love flubs. They aren’t robots.</p>
     253<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     254<p class="triangle-right right">...is with a new computer!</p>
     255<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     256<p class="triangle-right lefttwo">Lip sync.</p>
     257<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     258<p class="triangle-right left">And here we have a new Mac Pro driving two 4K monitors.</p>
     259<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     260<p class="triangle-right right">The mac has no equal when it comes to running Pages.</p>
     261<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     262<p class="triangle-right left">You can have it for only 75,000 euros.</p>
     263<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     264<p class="triangle-right right">Which is like 34 cents American.</p>
     265<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     266<p class="triangle-right lefttwo">Apple rocket!</p>
     267<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     268<p class="triangle-right left">Jony has some in the lab.</p>
     269<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     270<p class="triangle-right right">"We bought NASA"</p>
     271<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     272<p class="triangle-right lefttwo">iLaunch</p>
     273<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     274<p class="triangle-right left">Got a good deal from the government.</p>
     275<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     276<p class="triangle-right lefttwo">Launch pad</p>
     277<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     278<p class="triangle-right right">Oooh, those are new icons.... is this a new Pages?</p>
     279<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     280<p class="triangle-right left">I have a feeling Amazon would buy NASA before Apple.</p>
     281<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     282<p class="triangle-right right">Did I miss him saying that this is a new Pages?</p>
     283<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     284<p class="triangle-right left">Probably just Bezos.
     285No.</p>
     286<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     287<p class="triangle-right lefttwo">Free shipping to Mars.</p>
     288<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     289<p class="triangle-right left">He hasn’t said it yet ...</p>
     290<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     291<p class="triangle-right right">That would make sense, because it would be silly for them to give old features... but those are new icons!
     292PAGES 2014!!!</p>
     293<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     294<p class="triangle-right left">Maybe the rover needs a new iPhone.</p>
     295<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     296<p class="triangle-right right">LOL</p>
     297<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     298<p class="triangle-right left">Oh Craig.
     299Nice work bringing the wife into the event.</p>
     300<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     301<p class="triangle-right right">Dang, he\'s taken ;-p
     302He\'s canceling that account the minute he gets off stage.</p>
     303<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     304<p class="triangle-right lefttwo">And now my social security number...</p>
     305<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     306<p class="triangle-right right">There\'s probably an intern doing that for him right now.</p>
     307<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     308<p class="triangle-right lefttwo">But you\'ll never get my thumbprint.</p>
     309<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     310<p class="triangle-right right">THIS DEMO IS FANTASTIC
     311It\'s more of a comic routine than anything new.</p>
     312<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     313<p class="triangle-right lefttwo">New calendar app! *rimshot*</p>
     314<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     315<p class="triangle-right left">Alright, now for the good stuff!
     316... date ... price ...</p>
     317<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     318<p class="triangle-right right">so we actually released it yesterday!</p>
     319<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     320<p class="triangle-right left">Free.</p>
     321<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     322<p class="triangle-right right">... Wait... wait
     323wait...</p>
     324<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     325<p class="triangle-right left">It’s free.
     326Has to be free.</p>
     327<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     328<p class="triangle-right lefttwo">New era.</p>
     329<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     330<p class="triangle-right left">Or they’re going to pay you!</p>
     331<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     332<p class="triangle-right right">has to be fre:OIHSEg;kuahrg ouhWTPOIUGGSR:IGH SK&gt;JGu;SFghe
     333a;ofg ;SFUY[OISDUg;aefgn.kajefhg ;oadufghd
     334;oaeirgp ;Skadgipy9q347t;gkufbvzkdjb;adigue
     335a;eorpugy ap97fdgy bpiduzlfbkv.zkjxcvh;a owithg2;iuhlzbdfjk</p>
     336<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     337<p class="triangle-right left">And it was shipped last week!
     338Come on Craig ...</p>
     339<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     340<p class="triangle-right lefttwo">With the purchase of an overpriced machine.</p>
     341<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     342<p class="triangle-right right">FREE FOR EVERYONE
     343LIKE LINUX</p>
     344<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     345<p class="triangle-right left">That’s awesome. Great work.</p>
     346<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     347<p class="triangle-right right">Wow
     348Wow
     349Woooooow!</p>
     350<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     351<p class="triangle-right lefttwo">Entitled to Mavericks.</p>
     352<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     353<p class="triangle-right right">TODAY!!
     354A:OIY POGUSRH:IGUHSFPIUG&amp;SF*I</p>
     355<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     356<p class="triangle-right left">BOOM!</p>
     357<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     358<p class="triangle-right right">I"M CALLING IN SICK.</p>
     359<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     360<p class="triangle-right left">Siracusa just cried.</p>
     361<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     362<p class="triangle-right lefttwo">Ok. Presentations over. Go get Mavericks.</p>
     363<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     364<p class="triangle-right left">LOL</p>
     365<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     366<p class="triangle-right right">I\'M NOT BACKED UP!!!</p>
     367<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     368<p class="triangle-right left">UNTUCKED SHIRT!</p>
     369<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     370<p class="triangle-right right">I WASN\'T PREPARED FOR THIS</p>
     371<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     372<p class="triangle-right left">This is great news. I like that they’re going free for everyone. That’s awesome.</p>
     373<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     374<p class="triangle-right lefttwo">Cue Video of People screaming and running out of Apple stores with free OS</p>
     375<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     376<p class="triangle-right right">LOOT ALL THE THINGS</p>
     377<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     378<p class="triangle-right left">That is the problem.
     379I still remember paying $129 for Tiger.</p>
     380<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     381<p class="triangle-right right">Oooh, Macbook Pro update?</p>
     382<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     383<p class="triangle-right left">FOR A BOX!
     384That poor tree.
     385Haswell.
     386I’m guessing non-Retina is dead.</p>
     387<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     388<p class="triangle-right right">WHAT? HOW CAN THEY DO THIS BLACK MAGIC!?!?</p>
     389<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     390<p class="triangle-right lefttwo">So thin you can cut yourself on the edges.</p>
     391<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     392<p class="triangle-right left">... and it is purple.
     393That’s good news.
     394Prices Phil.</p>
     395<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     396<p class="triangle-right lefttwo">The Black Knight.</p>
     397<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     398<p class="triangle-right right">I only buy purple computer chips.</p>
     399<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     400<p class="triangle-right lefttwo">Only on iTunes.</p>
     401<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     402<p class="triangle-right left">Same here.</p>
     403<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     404<p class="triangle-right right">WIFI has air conditioning now!</p>
     405<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     406<p class="triangle-right left">I’m guessing hardware decoding helps with that.</p>
     407<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     408<p class="triangle-right right">!!!!
     409That\'s not much more than my air...
     410TODAY!!??!</p>
     411<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     412<p class="triangle-right lefttwo">MacBook Air is free!</p>
     413<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     414<p class="triangle-right right">We\'re going FREE in a BIG WAY.</p>
     415<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     416<p class="triangle-right left">No more non-Retina.</p>
     417<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     418<p class="triangle-right lefttwo">5C is free cause we can\'t sell them all.</p>
     419<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     420<p class="triangle-right right">We\'re printing money, you can have anything for free at this point.</p>
     421<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     422<p class="triangle-right left">And a toaster!</p>
     423<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     424<p class="triangle-right right">We\'ll just make more money to cover the cost.</p>
     425<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     426<p class="triangle-right left">$1799.
     427BLAH!</p>
     428<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     429<p class="triangle-right lefttwo">Free posters for your wall with petals.</p>
     430<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     431<p class="triangle-right left">Duh.</p>
     432<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     433<p class="triangle-right right">I didn\'t realize that computers were so expensive.</p>
     434<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     435<p class="triangle-right left">LOL</p>
     436<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     437<p class="triangle-right right">MORE CHECKBOXES!!</p>
     438<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     439<p class="triangle-right lefttwo">Free Mercury!</p>
     440<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     441<p class="triangle-right left">That $1299 13” is tempting.</p>
     442<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     443<p class="triangle-right lefttwo">Mac Pro.</p>
     444<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     445<p class="triangle-right left">A very significant, if unsurprising update.
     446“blown away”</p>
     447<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     448<p class="triangle-right lefttwo">Blown away by the trash can.</p>
     449<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     450<p class="triangle-right left">That is one powerful fan.</p>
     451<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     452<p class="triangle-right right">I think this is all cinema 4D... I don\'t think they actually built one.</p>
     453<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     454<p class="triangle-right left">They’re just going to bring out an old case.</p>
     455<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     456<p class="triangle-right right">"Simply remarkable."</p>
     457<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     458<p class="triangle-right lefttwo">The Mac Pro is virtual. You don\'t get a box.
     459Cloud based.</p>
     460<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     461<p class="triangle-right left">LOL</p>
     462<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     463<p class="triangle-right right">THE FASTEST MEMORY!* (*that we have ever put in a mac)</p>
     464<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     465<p class="triangle-right lefttwo">We finally put graphics cards that aren\'t old in a Mac.</p>
     466<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     467<p class="triangle-right left">That is some speedy storage.
     468Yup, spinning rust taps out at about 120 MB/sec.</p>
     469<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     470<p class="triangle-right right">We\'ll even sell you this case that matches to put your drives into!</p>
     471<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     472<p class="triangle-right left">For a single drive.
     473Who is going to be the first to mod a real trash can with a RAID array to Thunderbolt?</p>
     474<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     475<p class="triangle-right right">I can\'t wait to see the enclosures people make to go with this device.</p>
     476<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     477<p class="triangle-right lefttwo">Row of trash cans daisy chained together.</p>
     478<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     479<p class="triangle-right right">Packed and built for expansion.</p>
     480<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     481<p class="triangle-right lefttwo">It\'s only one Mac Pro. I know it looks like ten.</p>
     482<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     483<p class="triangle-right left">That is one dense machine.</p>
     484<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     485<p class="triangle-right right">"We can\'t imagine what people can do with this."</p>
     486<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     487<p class="triangle-right left">So we’ve decided to not sell it to people ... only robots!</p>
     488<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     489<p class="triangle-right right">FREE</p>
     490<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     491<p class="triangle-right lefttwo">Final Cut Pro X. It\'s all Downhill from here.</p>
     492<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     493<p class="triangle-right left">I do not know these people.</p>
     494<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     495<p class="triangle-right right">And... that\'s why...</p>
     496<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     497<p class="triangle-right left">I think Phil probably sleeps with these things.</p>
     498<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     499<p class="triangle-right lefttwo">This Mac Pro is killer.</p>
     500<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     501<p class="triangle-right left">This Mac Pro is (a) killer.
     502Whew.
     503This is going to get expensive fast.</p>
     504<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     505<p class="triangle-right right">3K. hmmm</p>
     506<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     507<p class="triangle-right left">Not terrible. However, now I need to price out the TOP OF THE LINE model and find out if it can cost more than my house.
     508Should be able to do it.</p>
     509<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     510<p class="triangle-right right">SO RECYCLABLE that you can throw it into the trash... or use it as a trash can.</p>
     511<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     512<p class="triangle-right lefttwo">30k</p>
     513<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     514<p class="triangle-right right">"THIS CHART PROVES IT"</p>
     515<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     516<p class="triangle-right left">That cannot be understated, less power is a big deal when you get some space heaters together.
     517Whew. That’s nuts.
     518I have a Mac mini under my desk right now.</p>
     519<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     520<p class="triangle-right right">You\'re nuts.
     521You\'re going to buy like 6 of these.</p>
     522<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     523<p class="triangle-right left">I wish.</p>
     524<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     525<p class="triangle-right right">We made another video for you!</p>
     526<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     527<p class="triangle-right lefttwo">NEW VIDEO</p>
     528<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     529<p class="triangle-right left">I wonder how hard of a sell a lab of Mac Pros would be.
     530There you go Aaron.</p>
     531<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     532<p class="triangle-right lefttwo">Better be edited on FCPX.</p>
     533<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     534<p class="triangle-right left">I want to hear the disembodied voice of Jony Ive!</p>
     535<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     536<p class="triangle-right right">JEFF WILLIAM THE COMPOSER!... oh wait... not the same guy.</p>
     537<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     538<p class="triangle-right left">Not this Williams fellow!</p>
     539<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     540<p class="triangle-right right">Shiny, captain.</p>
     541<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     542<p class="triangle-right lefttwo">Robots!</p>
     543<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     544<p class="triangle-right right">Oh, he has a Jarvis too!</p>
     545<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     546<p class="triangle-right left">This is what having 100+ billion in the bank can do for your product line.</p>
     547<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     548<p class="triangle-right right">Who assembles the assembly line?</p>
     549<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     550<p class="triangle-right lefttwo">I want a tour .</p>
     551<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     552<p class="triangle-right left">It is like a freaking laboratory for a single computer line from a single company.
     553Alright, I want one.
     554Crap.</p>
     555<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     556<p class="triangle-right lefttwo">If I buy a Mac Pro do I get an assembly line tour too?</p>
     557<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     558<p class="triangle-right left">How to convince my boss to get me two ...
     559Maybe when you get the top-of-the-line model?</p>
     560<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     561<p class="triangle-right right">There\'s more!?!?!?</p>
     562<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     563<p class="triangle-right left">EDDIE!</p>
     564<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     565<p class="triangle-right right">Eddie!
     566Who is Eddie?</p>
     567<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     568<p class="triangle-right lefttwo">Appses</p>
     569<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     570<p class="triangle-right left">He seems like a mobster.</p>
     571<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     572<p class="triangle-right right">BIGGEST UPDATES EVER</p>
     573<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     574<p class="triangle-right left">LOL
     575Another drink?</p>
     576<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     577<p class="triangle-right right">He is a mobster.</p>
     578<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     579<p class="triangle-right left">He does do the negotiating.</p>
     580<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     581<p class="triangle-right right">WE REDESIGNED THE ICONS!</p>
     582<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     583<p class="triangle-right left">LOL</p>
     584<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     585<p class="triangle-right right">Designed to look different!</p>
     586<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     587<p class="triangle-right lefttwo">We are going to kill the competition.</p>
     588<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     589<p class="triangle-right left">Crap. I am going to spend money.
     59064-bit!</p>
     591<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     592<p class="triangle-right right">It\'s all free Bob!
     593IT\'S ALL FREE!</p>
     594<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     595<p class="triangle-right left">I wish I could get a free Mac Pro.
     596I spent $2000 on my original 15” PowerBook G4 ... $3K on a Mac Pro ...</p>
     597<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     598<p class="triangle-right right">I you have iOS, because, let\'s be honest, we know you do, and if you don\'t security will escort you out.</p>
     599<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     600<p class="triangle-right left">LOL</p>
     601<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     602<p class="triangle-right lefttwo">You have to show your iPhone to get in.</p>
     603<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     604<p class="triangle-right left">Photo Books are extremely popular. Bringing them to the iPad is an excellent move.</p>
     605<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     606<p class="triangle-right right">iPhoto! The same, but we changed the icon!</p>
     607<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     608<p class="triangle-right left">“amazing”</p>
     609<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     610<p class="triangle-right right">iMovie is new from the ground up! Because we like to do that every so often...
     611You don\'t need to edit!</p>
     612<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     613<p class="triangle-right lefttwo">iMovie has ONE button now!</p>
     614<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     615<p class="triangle-right right">New design! Because we can\'t quite figure this out for reals...</p>
     616<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     617<p class="triangle-right left">WHAT WIZARDS DO THEY HIRE!</p>
     618<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     619<p class="triangle-right right">We simplified the interface, so that you can\'t actually do anything with the things... because that\'s complicated and we want it to be simple.</p>
     620<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     621<p class="triangle-right left">I think we call this “value add.”</p>
     622<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     623<p class="triangle-right lefttwo">iMovie theater. More file management users won\'t understand.</p>
     624<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     625<p class="triangle-right left">Geez Apple ...</p>
     626<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     627<p class="triangle-right right">The most popular musical creation app... in the world... that is part of ilife...
     628It\'s asterisks all the way down.</p>
     629<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     630<p class="triangle-right left">Remember when we couldn’t even make phone calls from our phones because we didn’t have one ... now you can record whole albums from one.
     631LOL</p>
     632<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     633<p class="triangle-right lefttwo">Everything is killer .</p>
     634<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     635<p class="triangle-right right">I don\'t remember that.</p>
     636<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     637<p class="triangle-right left">Serials.</p>
     638<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     639<p class="triangle-right right">Click the drummer button, and we\'ll send one to your house.</p>
     640<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     641<p class="triangle-right left">WE NO LONGER NEED DRUMMERS!</p>
     642<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     643<p class="triangle-right lefttwo">Siri. I need a beat.</p>
     644<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     645<p class="triangle-right left">OR HUMANS!</p>
     646<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     647<p class="triangle-right right">What is this I don\'t even...</p>
     648<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     649<p class="triangle-right lefttwo">The drummers have names.</p>
     650<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     651<p class="triangle-right right">"We have so much money we\'re trying to spend it as fast as we can, but it\'s just not working... we really don\'t understand it..."</p>
     652<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     653<p class="triangle-right left">In. App. Purchase.</p>
     654<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     655<p class="triangle-right right">@aaron - Unlike real drummers... who don\'t have names.</p>
     656<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     657<p class="triangle-right lefttwo">Is that a bio next to the photo?</p>
     658<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     659<p class="triangle-right left">I have a feeling that he drew the short straw because this is his baby.</p>
     660<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     661<p class="triangle-right lefttwo">DRUMMER</p>
     662<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     663<p class="triangle-right left">Mobster.</p>
     664<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     665<p class="triangle-right right">"That was AWESOME... I love garageband..."</p>
     666<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     667<p class="triangle-right left">He just gets stuff done.</p>
     668<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     669<p class="triangle-right right">Is he drunk?</p>
     670<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     671<p class="triangle-right left">NO!
     672I WANT FREE FOR EVERYONE!</p>
     673<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     674<p class="triangle-right lefttwo">FREE drummers.</p>
     675<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     676<p class="triangle-right right">AUUGH... free for everyone plz!</p>
     677<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     678<p class="triangle-right left">...I guess I need to purchase a new Mac.
     679NEW ICONS!
     68064-bit please?</p>
     681<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     682<p class="triangle-right lefttwo">Free pizza tray where the optical drive used to be.</p>
     683<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     684<p class="triangle-right left">Collaboration?</p>
     685<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     686<p class="triangle-right right">Of course it\'s 64 bit. It\'s free for new users.</p>
     687<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     688<p class="triangle-right left">Could it be a pizza oven?</p>
     689<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     690<p class="triangle-right right">Because SCREW PEOPLE WHO NEED TO UPGRADE.</p>
     691<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     692<p class="triangle-right lefttwo">Drummers don\'t work on an empty stomach</p>
     693<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     694<p class="triangle-right right">We can\'t afford to give EVERYONE iWork.</p>
     695<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     696<p class="triangle-right left">You could probably cook a pizza on top of a Mac Pro.</p>
     697<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     698<p class="triangle-right right">Will drum for food.</p>
     699<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     700<p class="triangle-right left">Microsoft Office sucks.
     701That is what he meant.</p>
     702<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     703<p class="triangle-right right">What hasn\'t apple reinvented?</p>
     704<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     705<p class="triangle-right lefttwo">The Mac Pro had an integrated stovetop.</p>
     706<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     707<p class="triangle-right right">LOL</p>
     708<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     709<p class="triangle-right left">I like that.</p>
     710<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     711<p class="triangle-right right">MacPro Grill.</p>
     712<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     713<p class="triangle-right left">It now presents for us?</p>
     714<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     715<p class="triangle-right right">WHAT!?!?!?</p>
     716<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     717<p class="triangle-right left">I’m sure no one noticed.
     718Plus, if it crashes, no one will care.</p>
     719<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     720<p class="triangle-right right">PLOT TWIST</p>
     721<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     722<p class="triangle-right lefttwo">Video of famous director eating grilled Sandwich while swiping with greasy fingers.</p>
     723<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     724<p class="triangle-right right">WHOA</p>
     725<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     726<p class="triangle-right left">LOL</p>
     727<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     728<p class="triangle-right lefttwo">DEMO!</p>
     729<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     730<p class="triangle-right left">I still feel like Eddie Cue should be knocking the heads of the movie studios right now.</p>
     731<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     732<p class="triangle-right right">No one lets you do what we do with our app because no one loves you like apple loves you.
     733That\'s easy to imagine</p>
     734<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     735<p class="triangle-right left">Plus, he has a great mobster name.</p>
     736<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     737<p class="triangle-right right">HE\'s a rapper!
     738BLING BLING</p>
     739<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     740<p class="triangle-right lefttwo">He wears a Mac Pro on a chain around his neck.</p>
     741<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     742<p class="triangle-right right">LOL
     743Steve is rolling in his grave.</p>
     744<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     745<p class="triangle-right left">Oh a semi-serious note, I like that they take pots at themselves and each other.</p>
     746<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     747<p class="triangle-right right">POT. That\'s probably the problem.</p>
     748<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     749<p class="triangle-right lefttwo">All their meetings are nonsense and jokes now that Steve isn\'t there to tell them to get back to work.</p>
     750<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     751<p class="triangle-right left">LOL</p>
     752<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     753<p class="triangle-right right">Bob, did you see John Siracusa\'s tweet?</p>
     754<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     755<p class="triangle-right left">Yes I did.
     756I have a feeling “scrambling” doesn’t get to the heart of that.</p>
     757<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     758<p class="triangle-right right">Oh geez.</p>
     759<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     760<p class="triangle-right left">WAIT WAIT WAIT ... IS THIS COLLABORATION!</p>
     761<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     762<p class="triangle-right right">Not by my definition...</p>
     763<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     764<p class="triangle-right lefttwo">Stuck on a PC.
     765Free.</p>
     766<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     767<p class="triangle-right right">FREE FOR EVERYONE
     768... NOPE, Chuck Testa!
     769With new purchase.</p>
     770<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     771<p class="triangle-right lefttwo">.
     772Today</p>
     773<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     774<p class="triangle-right right">I\'m just going to sell my Macbook air and buy a new one.</p>
     775<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     776<p class="triangle-right left">Always.
     777CRUDDY CRUD CRUD!</p>
     778<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     779<p class="triangle-right right">The biggest day ever for apps.</p>
     780<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     781<p class="triangle-right left">Geez ... 20 apps!</p>
     782<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     783<p class="triangle-right right">Apple doesn\'t care about previous customers</p>
     784<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     785<p class="triangle-right left">... COME ON PODCAST.APP!</p>
     786<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     787<p class="triangle-right right">20 apps?
     788I only saw 3
     789or 4</p>
     790<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     791<p class="triangle-right left">They’re pushing updates for 20 apps today.</p>
     792<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     793<p class="triangle-right lefttwo">iPad announcement?</p>
     794<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     795<p class="triangle-right right">On it\'s ear!</p>
     796<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     797<p class="triangle-right left">I’m guessing that is next. We’re only one hour in.</p>
     798<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     799<p class="triangle-right right">ON IT\'S EAR
     800$1.99 upgrades!
     801FREE MACS FOR EVERYONE!</p>
     802<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     803<p class="triangle-right left">LOL</p>
     804<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     805<p class="triangle-right right">TIM COOK FOR PRESIDENT!</p>
     806<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     807<p class="triangle-right left">I remember paying $10 for the iPod touch update.
     808The sad part, they could give away almost everything and they’d still make money.
     809Netbooks are old Chromebooks ...</p>
     810<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     811<p class="triangle-right right">LOOK AT ALL THESE LARGE NUMBERS!
     812this chart proves that bigger numbers are near the top of the chart!</p>
     813<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     814<p class="triangle-right lefttwo">That curve is going up and to the right!</p>
     815<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     816<p class="triangle-right left">Maybe they flipped the chart?</p>
     817<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     818<p class="triangle-right right">I can\'t think of another product that has sold this many numbers of product!</p>
     819<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     820<p class="triangle-right lefttwo">Doubters...</p>
     821<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     822<p class="triangle-right right">NO ONE has ever sold 170 million of anything!</p>
     823<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     824<p class="triangle-right lefttwo">Blueberry Pie chart.</p>
     825<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     826<p class="triangle-right left">Too bad I don’t like blueberries.</p>
     827<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     828<p class="triangle-right right">Look at this pie chart! We\'re larger than the thing that isn\'t us!</p>
     829<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     830<p class="triangle-right lefttwo">iPad now blue flavored.</p>
     831<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     832<p class="triangle-right right">Since we started tracking this, we have been the best at tracking this.</p>
     833<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     834<p class="triangle-right left">iOS 7.1 today?</p>
     835<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     836<p class="triangle-right right">No one else can match this. NO ONE.</p>
     837<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     838<p class="triangle-right left">More zeroes.</p>
     839<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     840<p class="triangle-right right">If we say this enough, everyone will believe it.</p>
     841<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     842<p class="triangle-right lefttwo">Productive.
     843Look a racing game!</p>
     844<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     845<p class="triangle-right left">Too much exposition.
     846“No new iPads!”
     847“We designed iPad ...”
     848Like a family pet.</p>
     849<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     850<p class="triangle-right lefttwo">Video!</p>
     851<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     852<p class="triangle-right left">“We fed Molly...”</p>
     853<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     854<p class="triangle-right lefttwo">Video!</p>
     855<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     856<p class="triangle-right right">LOOK AT ALL THESE BIG NUMBERS!!! But let\'s be honest, it\'s not about the numbers... though, our numbers are bigger than other people\'s numbers, but we really want to focus on our Quality... OF THIS NEW VIDEO!</p>
     857<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     858<p class="triangle-right left">They should do an audio-only video.</p>
     859<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     860<p class="triangle-right right">Look Bob! A farming app!</p>
     861<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     862<p class="triangle-right left">I WAS COMBINING THIS WEEKEND!</p>
     863<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     864<p class="triangle-right right">It\'s like they understand you!</p>
     865<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     866<p class="triangle-right left">Sadly, that particular one is tied to a particular system on very expensive new machines.</p>
     867<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     868<p class="triangle-right lefttwo">This is the best video.</p>
     869<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     870<p class="triangle-right right">Look, here\'s a firefighter playing angry birds.</p>
     871<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     872<p class="triangle-right lefttwo">Surgeons playing ERT2</p>
     873<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     874<p class="triangle-right left">I’ve personally used my iPad for business meetings.
     875How are these people getting cell reception in these areas!?</p>
     876<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     877<p class="triangle-right right">It\'s much more interesting to look at the world through your iPad if you\'re at the great wall of China.</p>
     878<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     879<p class="triangle-right lefttwo">I want to know how many of the shots are real. Some seem too good to be true</p>
     880<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     881<p class="triangle-right right">That\'s an amazing video...
     882And amazing stories...</p>
     883<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     884<p class="triangle-right lefttwo">Lots of helicopter shots.</p>
     885<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     886<p class="triangle-right right">...so we hire pixar to make movies about every scene in that video.
     887HEY! IT\'S OTHER ME!</p>
     888<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     889<p class="triangle-right left">Phil’s back!
     890BRING US CRAIG!</p>
     891<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     892<p class="triangle-right right">Hello!
     89313 INCH IPAD</p>
     894<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     895<p class="triangle-right lefttwo">Craig is doing his hair.</p>
     896<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     897<p class="triangle-right right">And tucking in his shirt.
     898"Relentless path"</p>
     899<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     900<p class="triangle-right left">Remarkable.
     901DRINK!</p>
     902<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     903<p class="triangle-right lefttwo">Biggest step.</p>
     904<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     905<p class="triangle-right right">"Incredible vision," "Quite remarkable"
     906In VIDEO FORM!</p>
     907<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     908<p class="triangle-right lefttwo">Video.</p>
     909<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     910<p class="triangle-right left">Why do we hate articles?</p>
     911<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     912<p class="triangle-right lefttwo">It\'s anti gravity!</p>
     913<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     914<p class="triangle-right left">No TouchID.</p>
     915<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     916<p class="triangle-right right">Wait, what?</p>
     917<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     918<p class="triangle-right left">I didn’t see it.</p>
     919<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     920<p class="triangle-right right">NEW NEW IPAD</p>
     921<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     922<p class="triangle-right left">iPad Air?
     923WHAT THE FREAK!?</p>
     924<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     925<p class="triangle-right lefttwo">iPad air? Really?</p>
     926<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     927<p class="triangle-right right">Wait... 9.7 is air?</p>
     928<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     929<p class="triangle-right left">Has to be pricing pressure.</p>
     930<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     931<p class="triangle-right right">So... what happened to the mini?</p>
     932<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     933<p class="triangle-right left">Drop the price on Fat iPad.</p>
     934<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     935<p class="triangle-right right">The NEW NEW IPAD AIR MINI!</p>
     936<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     937<p class="triangle-right left">Drop the price on iPad mini.</p>
     938<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     939<p class="triangle-right right">That\'s an amazingly thin iPad!</p>
     940<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     941<p class="triangle-right lefttwo">Little numbers!</p>
     942<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     943<p class="triangle-right left">Nicely stated Aaron.</p>
     944<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     945<p class="triangle-right right">LOOK AT HOW SMALL THESE NUMBERS ARE! No one has numbers this small!</p>
     946<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     947<p class="triangle-right left">More tiny numbers.</p>
     948<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     949<p class="triangle-right lefttwo">No way lighter?</p>
     950<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     951<p class="triangle-right left">It would be awesome if it were heavier.</p>
     952<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     953<p class="triangle-right lefttwo">It\'s so light it might blow away outdoors.</p>
     954<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     955<p class="triangle-right right">Lightest Full size tablet in the world*</p>
     956<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     957<p class="triangle-right left">“We’ve made it out of lead!”
     958A7 ...</p>
     959<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     960<p class="triangle-right right">The AIR... BLOWS everything away... get it? get it? get it?</p>
     961<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     962<p class="triangle-right left">Which is good, but ... TouchID?</p>
     963<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     964<p class="triangle-right lefttwo">Blue curves!</p>
     965<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     966<p class="triangle-right right">Too thin for touch id.</p>
     967<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     968<p class="triangle-right left">That’s important because IT IS PUSHING DESKTOP RESOLUTION!
     969That’s my thought as well.</p>
     970<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     971<p class="triangle-right right">What\'s MIMO?</p>
     972<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     973<p class="triangle-right left">Using multiple antenna for wifi.</p>
     974<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     975<p class="triangle-right right">hmmm</p>
     976<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     977<p class="triangle-right left">Faster, better range, etc.
     978“It is better, you’re going to buy it, so just go now.”</p>
     979<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     980<p class="triangle-right lefttwo">Dual microphones! Stereo recordings!
     981No gold?</p>
     982<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     983<p class="triangle-right left">Same battery life that much thinner and lighter, what are they doing?</p>
     984<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     985<p class="triangle-right lefttwo">Magic.</p>
     986<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     987<p class="triangle-right right">$4.99! WERE GOING FREE BABY!</p>
     988<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     989<p class="triangle-right left">WHAT!?
     990IPAD 2 IS STILL AROUND!?</p>
     991<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     992<p class="triangle-right right">We\'re keeping this iPad around for people who still like things that weigh a ton.</p>
     993<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     994<p class="triangle-right left">Has to do with graphics only, the A6X and A5X were SERIOUSLY underpowered graphics wise.</p>
     995<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     996<p class="triangle-right lefttwo">Video!</p>
     997<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     998<p class="triangle-right left">Please bring Jony ...
     999YES!</p>
     1000<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1001<p class="triangle-right right">JOHNNY IVES!</p>
     1002<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1003<p class="triangle-right lefttwo">Jony Ives.</p>
     1004<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1005<p class="triangle-right left">Aluminium ... come on ... say it ...
     1006I was afraid that Jony has left ...</p>
     1007<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1008<p class="triangle-right lefttwo">Robot that drops iPads.</p>
     1009<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1010<p class="triangle-right right">Is the mini gone?</p>
     1011<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1012<p class="triangle-right lefttwo">Airplanes!</p>
     1013<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1014<p class="triangle-right left">Don’t know yet. We’ll see.
     1015AND AIRPLANES!</p>
     1016<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1017<p class="triangle-right lefttwo">More planes.</p>
     1018<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1019<p class="triangle-right right">LOL</p>
     1020<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1021<p class="triangle-right left">THE IPAD AIR ... GET IT ... AIRPLANES!
     1022PEOPLE JUMPING IN THE AIR!</p>
     1023<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1024<p class="triangle-right right">I don\'t understand.</p>
     1025<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1026<p class="triangle-right left">STANDING IN AIR!</p>
     1027<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1028<p class="triangle-right lefttwo">That\'s looked like an expensive apartment.</p>
     1029<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1030<p class="triangle-right right">Can you explain it?</p>
     1031<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1032<p class="triangle-right lefttwo">Craig!</p>
     1033<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1034<p class="triangle-right left">YES!
     1035BRING OUT CRAIG!</p>
     1036<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1037<p class="triangle-right right">Tom Merritt: "We have machined the tears of unicorns into the edge and compressed babies wishes into it\'s case. It weighs 1 butterfly kiss."
     1038"The newest thing we built is the most advanced thing we have ever built"</p>
     1039<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1040<p class="triangle-right left">And now we’ve decided to discontinue it and release the iPad nano!</p>
     1041<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1042<p class="triangle-right right">He\'s struggling for a list of things that people do with their iPad... CRASH AND BURN!</p>
     1043<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1044<p class="triangle-right left">It is hard when they do so many things.
     1045Missed it, what was announced?
     1046Ah, Retina ...</p>
     1047<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1048<p class="triangle-right right">It\'s only $399!</p>
     1049<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1050<p class="triangle-right left">LOL</p>
     1051<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1052<p class="triangle-right right">You can hear a pin drop in the audience.</p>
     1053<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1054<p class="triangle-right left">LOL
     1055A significant price point, but ... eh.</p>
     1056<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1057<p class="triangle-right right">Oh, $299... and then they clap...</p>
     1058<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1059<p class="triangle-right left">I cannot believe that the iPad 2 is hanging around.
     1060Truly a zombie.
     1061Did I miss the fact that the Air has an A6X?
     1062Sorry, mini.</p>
     1063<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1064<p class="triangle-right lefttwo">Reach under your seat. Free iPads for everyone</p>
     1065<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1066<p class="triangle-right right">Another video
     1067It\'s hiding behind this pencil.</p>
     1068<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1069<p class="triangle-right lefttwo">Ipencil.</p>
     1070<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1071<p class="triangle-right right">iPad. iPad 2. New iPad. iPad Air. Because we can\'t figure out a naming scheme that works...</p>
     1072<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1073<p class="triangle-right lefttwo">Just play the Mac Pro assembly line video again.</p>
     1074<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1075<p class="triangle-right right">No musical guest? SELL YOUR STOCK</p>
     1076<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1077<p class="triangle-right lefttwo">Eddy.
     1078He\'s gonna play.</p>
     1079<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1080<p class="triangle-right left">4 grand for the 6-core Mac Pro.
     10816 GB of video RAM.</p>
     1082<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1083<p class="triangle-right lefttwo">Hmmm</p>
     1084<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1085<p class="triangle-right left">Thank you gentleman.</p>
     1086<img class="alignright" src="http://www.example.com/postimages/2013/philipmetroid.jpg" alt="" width="50" height="50" />
     1087<p class="triangle-right right">No, thank you.</p>
     1088<img class="alignleft" src="http://www.example.com/postimages/2013/aarone.jpeg" alt="" width="50" height="50" />
     1089<p class="triangle-right lefttwo">Thanks for a magical event</p>
     1090<img class="alignleft" src="http://www.example.com/postimages/2013/bobm.jpeg" alt="" width="50" height="50" />
     1091<p class="triangle-right left">Darn right!</p>'),
     1092
     1093/* DIVIDER */
     1094
     1095array('<em>Lorem ipsum dolor sit amet, quo id ignota repudiare, ius iracundia rationibus an, ea natum causae epicuri has.</em>
     1096
     1097His porro deleniti cu. "Eam ut quem alia reprimique." Quas tollit tincidunt his eu, nam ex cibo illud cetero. In perpetua dignissim mel, te utinam vituperata per.
     1098
     1099 Erat tibique hendrerit et duo, qui iriure tacimates ne, per eu solum admodum ocurreret. Cu ius utinam equidem saperet, mei tation nostrud scripserit ne. Sea et vide natum. Homero constituto eu est, quo eu veniam omnium feugait. Vel enim commune no.
     1100
     1101 Option verterem eum te, quot discere neglegentur nam at. No rebum convenire disputationi pro, libris possim eruditi (id) est. Unum ubique scaevola sed ad. Quas decore periculis ius eu, quod nibh quando ea ius. Ea essent omnesque mei, possit verear aperiri ea mel, mea fabellas urbanitas pertinacia ei. Maiorum sensibus at duo, eum ea veritus splendide.
     1102
     1103 Ex quo noster alterum sanctus. Vel ei blandit adversarium, ad iriure scripta eruditi nam. Quo semper noluisse consectetuer te. Probatus mediocritatem necessitatibus ne pro. Vix ne consul soluta dissentiet.
     1104
     1105 Vix augue vivendum sadipscing ei, diam elaboraret scribentur no mea. Te pri nullam reprehendunt, ornatus maiorum ne qui. Et mei accusam singulis. Et est intellegat posidonium, no usu purto bonorum facilisi. Saperet cotidieque eu mel.
     1106
     1107 Nonumy pericula vis id, illum nobis aliquando cum ei, altera aeterno mediocritatem pro ea. At duo quaeque dolorem. Vidit tantas ea vim, quis feugiat delenit vix ad, te per choro omnesque. Eum id duis facilisis. Purto intellegat duo no, ne ipsum praesent moderatius vis, et meliore scriptorem vim.
     1108
     1109<!--more-->
     1110<table style="clear: both; margin: 14px; float: left;"><colgroup span="5"></colgroup>
     1111<tbody>
     1112<tr style="height: 20px;">
     1113<th></th>
     1114<th style="text-align: center;" colspan="2">Lorem ipsum</th>
     1115<th style="text-align: center;" colspan="2">Lorem ipsum</th>
     1116</tr>
     1117<tr>
     1118<th>Requirements</th>
     1119<th>Minimums</th>
     1120<th style="text-align: center; margin-right: 15px;">Status</th>
     1121<th style="padding: 0 8px;">Minimums</th>
     1122<th style="text-align: center;">Status</th>
     1123</tr>
     1124<tr>
     1125<td>Age</td>
     1126<td>Lorem ipsum</td>
     1127<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1128<td style="padding: 0 8px;">Lorem ipsum</td>
     1129<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1130</tr>
     1131<tr>
     1132<td>Total</td>
     1133<td>Lorem ipsum</td>
     1134<td style="color: #9c0006; text-align: center; background: #FFC7CE;">100%</td>
     1135<td style="padding: 0 8px;">Lorem ipsum</td>
     1136<td style="color: #9c0006; text-align: center; background: #FFC7CE;">100%</td>
     1137</tr>
     1138<tr>
     1139<td>Education</td>
     1140<td>Lorem ipsum</td>
     1141<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1142<td></td>
     1143<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1144</tr>
     1145<tr>
     1146<td>Concentration</td>
     1147<td>Lorem ipsum</td>
     1148<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1149<td></td>
     1150<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1151</tr>
     1152<tr>
     1153<td>Certification</td>
     1154<td>Lorem ipsum</td>
     1155<td style="color: #9c0006; text-align: center; background: #FFC7CE;">No</td>
     1156<td></td>
     1157<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1158</tr>
     1159<tr>
     1160<td>Recognized Coursework</td>
     1161<td>Lorem ipsum</td>
     1162<td style="color: #9c6500; text-align: center; background: #FFEB9C;">TBD</td>
     1163<td></td>
     1164<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1165</tr>
     1166<tr>
     1167<td>Lorem ipsum</td>
     1168<td>Lorem ipsum</td>
     1169<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1170<td></td>
     1171<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1172</tr>
     1173<tr>
     1174<td>Lorem ipsum</td>
     1175<td>Lorem ipsum</td>
     1176<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1177<td></td>
     1178<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1179</tr>
     1180<tr>
     1181<td>Lorem ipsum</td>
     1182<td>Lorem ipsum</td>
     1183<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1184<td></td>
     1185<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1186</tr>
     1187<tr>
     1188<td>Lorem ipsum</td>
     1189<td>Lorem ipsum</td>
     1190<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1191<td></td>
     1192<td style="color: #006100; text-align: center; background: #C6EFCE;">n/a</td>
     1193</tr>
     1194<tr>
     1195<td>Lorem ipsum</td>
     1196<td>Lorem ipsum</td>
     1197<td style="color: #9c0006; text-align: center; background: #FFC7CE;">80%</td>
     1198<td style="padding: 0 8px;">200 hours</td>
     1199<td style="color: #9c0006; text-align: center; background: #FFC7CE;">80%</td>
     1200</tr>
     1201<tr>
     1202<td>Lorem ipsum</td>
     1203<td>Lorem ipsum</td>
     1204<td style="color: #006100; text-align: center; background: #C6EFCE;">by credit</td>
     1205<td style="padding: 0 8px;">100 hours</td>
     1206<td style="color: #006100; text-align: center; background: #C6EFCE;">by credit</td>
     1207</tr>
     1208<tr>
     1209<td>Lorem ipsum</td>
     1210<td>Lorem ipsum</td>
     1211<td style="color: #9c0006; text-align: center; background: #FFC7CE;">60%</td>
     1212<td style="padding: 0 8px;">50 hours</td>
     1213<td style="color: #9c0006; text-align: center; background: #FFC7CE;">60%</td>
     1214</tr>
     1215<tr>
     1216<td>Lorem ipsum</td>
     1217<td>Lorem ipsum</td>
     1218<td style="color: #006100; text-align: center; background: #C6EFCE;">by credit</td>
     1219<td style="padding: 0 8px;">75 hours</td>
     1220<td style="color: #006100; text-align: center; background: #C6EFCE;">by credit</td>
     1221</tr>
     1222<tr>
     1223<td>Lorem ipsum</td>
     1224<td>Lorem ipsum</td>
     1225<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1226<td style="padding: 0 8px;">250 hours</td>
     1227<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1228</tr>
     1229<tr>
     1230<td style="padding-right: 8px;">Lorem ipsum</td>
     1231<td>Lorem ipsum</td>
     1232<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1233<td style="padding: 0 8px;">100 hours</td>
     1234<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1235</tr>
     1236<tr>
     1237<td>Lorem ipsum</td>
     1238<td>Lorem ipsum</td>
     1239<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1240<td style="padding: 0 8px;">25 hours</td>
     1241<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1242</tr>
     1243<tr>
     1244<td>Lorem ipsum</td>
     1245<td style="padding-right: 8px;">Effective Aug 2014</td>
     1246<td style="color: #9c6500; text-align: center; background: #FFEB9C;">n/a</td>
     1247<td></td>
     1248<td style="color: #9c6500; text-align: center; background: #FFEB9C;">n/a</td>
     1249</tr>
     1250<tr>
     1251<td>Lorem ipsum</td>
     1252<td>Lorem ipsum</td>
     1253<td style="color: #9c6500; text-align: center; background: #FFEB9C;">Dec \'14</td>
     1254<td></td>
     1255<td style="color: #9c6500; text-align: center; background: #FFEB9C;">Dec \'14</td>
     1256</tr>
     1257<tr>
     1258<td>Lorem ipsum</td>
     1259<td>Lorem ipsum</td>
     1260<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1261<td style="padding: 0 8px;">2nd Class</td>
     1262<td style="color: #006100; text-align: center; background: #C6EFCE;">Yes</td>
     1263</tr>
     1264</tbody>
     1265</table>
     1266Tota offendit sea et, ne vim dicam admodum blandit. No vix <abbr>quas</abbr> nusquam. Putant scripta fierent mei ea. Eum ei putant persius probatus, quo ea wisi electram.
     1267
     1268 Eu illud definiebas honestatis sit. Eam exerci deseruisse ei, ex cum erant tacimates. Enim eros id vel, vidisse abhorreant cu eum. Et saperet appellantur est, eum esse soluta recusabo ad. Eam malis sensibus ea.
     1269
     1270 Exerci scripta at est. His ei nostrum perfecto, accumsan eligendi tincidunt an eum. Ius tempor aperiam ea, mei autem lorem eu. Vis duis modus ornatus no, alia malis ornatus mea et, ea eros probatus qui.
     1271
     1272 Mazim assentior mel te, rebum periculis constituam nec ut. In ferri admodum deleniti eum, nam te quas nominati appellantur. Est at erat pertinax, no sit nulla placerat. Munere euripidis ad has.
     1273
     1274 Magna graeco oblique vel ea, no movet aliquando mea. Eum no sadipscing delicatissimi, doctus consequuntur eu sed. Sed in persius eleifend, regione euismod no per. Ei pri vivendum gubergren, vix at eligendi invenire aliquando, brute malorum id usu. Cum tantas prodesset consequuntur ei, eum liberavisse delicatissimi vituperatoribus at.
     1275
     1276 Cu bonorum graecis ius. Duo id ancillae probatus. Tota latine pri an. Cum ei iudico semper. Eum in blandit voluptaria.
     1277
     1278 Illud debet vitae ex vis numquam.'),
     1279
     1280/* DIVIDER */
     1281
     1282);}?>
     1283 No newline at end of file
  • tests/phpunit/includes/utils.php

     
    390390                return call_user_func_array( array( $this, $name ), $arguments );
    391391        }
    392392}
     393
     394/**
     395 * Determine approximate backtrack count when running PCRE.
     396 *
     397 * @return int The backtrack count.
     398 */
     399function benchmark_pcre_backtracking( $pattern, $subject, $strategy ) {
     400        $saved_config = ini_get( 'pcre.backtrack_limit' );
     401       
     402        // Attempt to prevent PHP crashes.  Adjust these lower when needed.
     403        if ( version_compare( phpversion(), '5.4.8', '>' ) ) {
     404                $limit = 1000000;
     405        } else {
     406                $limit = 20000;  // 20,000 is a reasonable upper limit, but see also https://core.trac.wordpress.org/ticket/29557#comment:10
     407        }
     408
     409        // Start with small numbers, so if a crash is encountered at higher numbers we can still debug the problem.
     410        for( $i = 4; $i <= $limit; $i *= 2 ) {
     411
     412                ini_set( 'pcre.backtrack_limit', $i );
     413               
     414                switch( $strategy ) {
     415                case 'split':
     416                        preg_split( $pattern, $subject );
     417                        break;
     418                case 'match':
     419                        preg_match( $pattern, $subject );
     420                        break;
     421                case 'match_all':
     422                        preg_match_all( $pattern, $subject );
     423                        break;
     424                }
     425
     426                ini_set( 'pcre.backtrack_limit', $saved_config );
     427
     428                switch( preg_last_error() ) {
     429                case PREG_NO_ERROR:
     430                        return $i;
     431                case PREG_BACKTRACK_LIMIT_ERROR:
     432                        continue;
     433                case PREG_RECURSION_LIMIT_ERROR:
     434                        trigger_error('PCRE recursion limit encountered before backtrack limit.');
     435                        break;
     436                case PREG_BAD_UTF8_ERROR:
     437                        trigger_error('UTF-8 error during PCRE benchmark.');
     438                        break;
     439                case PREG_INTERNAL_ERROR:
     440                        trigger_error('Internal error during PCRE benchmark.');
     441                        break;
     442                default:
     443                        trigger_error('Unexpected error during PCRE benchmark.');       
     444                }
     445        }
     446
     447        return $i;
     448}
     449 No newline at end of file
  • tests/phpunit/tests/formatting/WpHtmlSplit.php

     
     1<?php
     2
     3/**
     4 * @group formatting
     5 */
     6class Tests_Formatting_WpHtmlSplit extends WP_UnitTestCase {
     7
     8        /**
     9         * Basic functionality goes here.
     10         *
     11         * @dataProvider data_basic_features
     12         */
     13        function test_basic_features( $input, $output ) {
     14                return $this->assertEquals( $output, wp_html_split( $input ) );
     15        }
     16
     17        function data_basic_features() {
     18                return array(
     19                        array(
     20                                'abcd efgh',
     21                                array( 'abcd efgh' ),
     22                        ),
     23                        array(
     24                                'abcd <html> efgh',
     25                                array( 'abcd ', '<html>', ' efgh' ),
     26                        ),
     27                        array(
     28                                'abcd <!-- <html> --> efgh',
     29                                array( 'abcd ', '<!-- <html> -->', ' efgh' ),
     30                        ),
     31                        array(
     32                                'abcd <![CDATA[ <html> ]]> efgh',
     33                                array( 'abcd ', '<![CDATA[ <html> ]]>', ' efgh' ),
     34                        ),
     35                );
     36        }
     37
     38        /**
     39         * Automated performance testing of the main regex.
     40         *
     41         * @dataProvider data_whole_posts
     42         */
     43        function test_pcre_performance( $input ) {
     44                $regex = get_html_split_regex();
     45                $result = benchmark_pcre_backtracking( $regex, $input, 'split' );
     46                return $this->assertLessThan( 200, $result );
     47        }
     48
     49        function data_whole_posts() {
     50                require_once( DIR_TESTDATA . '/formatting/whole-posts.php' );
     51                return data_whole_posts();
     52        }
     53}
     54 No newline at end of file
  • tests/phpunit/tests/formatting/WPTexturize.php

     
    20482048                        ),
    20492049                );
    20502050        }
     2051
     2052        /**
     2053         * Automated performance testing of the main regex.
     2054         *
     2055         * @dataProvider data_whole_posts
     2056         */
     2057        function test_pcre_performance( $input ) {
     2058                global $shortcode_tags;
     2059
     2060                // With Shortcodes Disabled
     2061                $regex = _get_wptexturize_split_regex( );
     2062                $result = benchmark_pcre_backtracking( $regex, $input, 'split' );
     2063                $this->assertLessThan( 200, $result );
     2064
     2065                // With Shortcodes Enabled
     2066                $shortcode_regex = _get_wptexturize_shortcode_regex( array_keys( $shortcode_tags ) );
     2067                $regex = _get_wptexturize_split_regex( $shortcode_regex );
     2068                $result = benchmark_pcre_backtracking( $regex, $input, 'split' );
     2069                return $this->assertLessThan( 200, $result );
     2070        }
     2071
     2072        function data_whole_posts() {
     2073                require_once( DIR_TESTDATA . '/formatting/whole-posts.php' );
     2074                return data_whole_posts();
     2075        }
    20512076}
     2077 No newline at end of file
  • tests/phpunit/tests/shortcode.php

     
    616616                        ),
    617617                );
    618618        }
     619
     620        /**
     621         * Automated performance testing of the main regex.
     622         *
     623         * @dataProvider data_whole_posts
     624         */
     625        function test_pcre_performance( $input ) {
     626                $regex = '/' . get_shortcode_regex() . '/';
     627                $result = benchmark_pcre_backtracking( $regex, $input, 'match_all' );
     628                return $this->assertLessThan( 200, $result );
     629        }
     630
     631        function data_whole_posts() {
     632                require_once( DIR_TESTDATA . '/formatting/whole-posts.php' );
     633                return data_whole_posts();
     634        }
    619635}