<!DOCTYPE html>
<html>
<head>
    <!--
        http://www.gutenberg.org/ebooks/41252

        "This eBook is for the use of anyone anywhere at no cost and with almost no restrictions whatsoever. You may copy it, give it away or re-use it under the terms of the Project Gutenberg License included with this eBook or online at www.gutenberg.org."
    -->
    <title>Chapter reflow performance test: English prose thrice</title>
    <script src="../resources/runner.js"></script>
</head>
<body>
    <pre id="log"></pre>
    <div id="target" style="width: 300px; display: none;">
        <p><span>Germany's war Juggernaut by the morning of Monday, August 3, was in full, but incredibly noiseless, motion. I always knew it was a magnificently well greased machine, geared for the maximum of silence, but I felt sure it could not swing into action without some reverberating creaks. Yet Berlin externally had been far more feverishly agitated on Spring Parade days at recurring ends of May than it was now, with "enemies all around" and that "war on two fronts," which most Germans used to talk about as something,</span> <em class="italics">Gott sei Dank</em><span>, they would never live to see. One's male friends of military age--it was now the second day of mobilization--kept on melting away from hour to hour, but amid a complete lack of fuss and bustle. It almost seemed as if the army had orders to rush to the fighting-line in gum-shoes and that everything on wheels had rubber tires. As the Fatherland for years had armed in silence, so she was going to battle. We saw no seventeen-inch guns rumbling to the front. Those were Germany's best-concealed weapons. A military attaché of one of the chief belligerents, who lived in Berlin for four years preceding the war, has since confessed that he never even knew of the "Big Berthas'" existence!</span></p>

        <p><span>Germany girding for Armageddon was distinctly a disappointment. I entirely agreed with a portly dowager from the Middle West, who, between frettings about when she could get a train to the Dutch frontier, continually expressed her chagrin at such "a poor show." She imagined, like a good many of the rest of us, that mobilization in Germany would at the very least see the Supreme War Lord bolting madly up and down</span> <em class="italics">Unter den Linden</em><span>, plunging silver spurs into a foaming white charger and brandishing a glistening sword in martial gestures as Caruso does when he plays Radames in the finale of the second act of Aida. Verdi's Egyptian epic is the Kaiser's favorite opera, and he ought to have remembered, we thought, how a conquering hero should demean himself at such a blood-stirring hour. At least Berlin, we hoped, would rise to the occasion, and thunder and rock with the pomp and circumstance of war's alarums.</span></p>

        <p><span>There was amazingly little of anything of that sort. The Kaiser instead automobiled around town in a prosaic six-cylinder Mercedes, as he long was wont to do, just keeping some rather important professional engagements with the Chief of the General Staff, the Imperial Chancellor and the Secretary of the Navy. As he flitted by, the huge crowds lined up on the curbstone stiffened into attitudes, clicked heels, doffed hats and "</span><em class="italics">hoched</em><span>." The atmosphere was</span> <em class="italics">stimmungsvoller</em> <span>than usual, for German phlegm had vanished along with high prices on the Bourse, but the paroxysm of electric excitement which I always fancied would usher in a German war was unaccountably missing. When you mentioned that phenomenon to German friends, their bosoms swelled with visible pride. They were immeasurably flattered by your indirect compliment that the Kaiser's war establishment was so perfect a mechanism that it could clear for action almost imperceptibly.</span></p>

        <p><span>I had now deserted my home in suburban Wilmersdorf, which I nicknamed the "District of Columbia," for in and all around it Berlin's American colony was domiciled, and taken a room for the opening scenes of the war drama in the Hotel Adlon. With its broad fronts on the Linden and Pariser Platz, and the French, British and Russian Embassies within a stone's throw to the right and left, the Adlon was an ideal vantage point. If there were to be "demonstrations," I could feel sure, at so strategic a point, of being in the thick of them. Events of the succeeding thirty-six hours were to show that I did not reckon without my host on that score.</span></p>

        <p><span>From window and balcony overlooking the Linden I could now see or hear at intervals detachments of Berlin regiments, Uhlans or Infantry of the Guard, or a battery of light artillery, swinging along to railway stations to entrain for the front. Occasionally battalions of provincial regiments, distinguishable because the men did not tower into space like Berlin's guardsmen, crossed town en route from one train to another. The men seemed happier than I had ever before seen German soldiers. That was the only difference, or at least the principal one. The prospect of soon becoming cannon-fodder was evidently far from depressing. Most of them carried flowers entwined round the rifle barrel or protruding from its mouth. Here and there a bouquet dangled rakishly from a helmet. Now and then a flaxen-haired Prussian girl would step into the street and press a posey into some trooper's grimy hand. Yet, except for the fact that the soldiers were all in field gray, (I wonder when the Kaiser's military tailors began making those millions of gray uniforms!) with even their familiar spiked headpiece masked in canvas of the same hue, the Kaiser's fighting men marching off to battle might have been carrying out a workaday route-march. Then, suddenly, a company or a whole battalion would break into song, and the crowd, trailing alongside the bass-drum of the band, just as in peace times, would take up the refrain, and presently half-a-mile of</span> <em class="italics">Unter den Linden</em> <span>was echoing with</span> <em class="italics">Deutschland, Deutschland über Alles</em><span>, and I knew that the Fatherland was at war.</span></p>

        <p><span>At the railway stations of Berlin and countless other German towns and cities at that hour heart-rending little tragedies were being enacted, as fathers, mothers, wives, sisters and sweethearts bade a long farewell to the beloved in gray. Only rarely did some man in uniform himself surrender to the emotions of the moment. These swarthy young Germans, with fifty or sixty pounds of impedimenta strapped round them, were endowed with Spartan stolidity now, and smilingly buoyed up the drooping spirits of the kith and kin they were leaving behind. "</span><em class="italics">Es wird schon gut, Mütterchen! Es wird schon gut!</em><span>" (It will be all right, mother dear! It will be all right!) Thus they returned comfort for tears.</span> <em class="italics">"Nicht unterliegen! Besser nicht zurückkehren!</em><span>" (Don't be beaten! Better not come back at all!) was the good-by greeting blown with the final kisses as many a trainload of embryonic heroes faded slowly from sight beneath the station's gaping archway. Germany was now indubitably convinced that its war was war in a holy cause. The time had come for the Fatherland to rise to the majesty of a great hour. "</span><em class="italics">Auf wiedersehen!</em><span>" sang the country to the army. But if there was to be no reunion, the army must go down fighting to the last gasp for</span> <em class="italics">unsere gerechte Sache</em><span>, manfully, tirelessly, ruthlessly, till victory was enforced. Such were the inspiring thoughts amid which the boys in field gray trooped off to die for Kaiser and Empire.</span></p>

        <p><span>The outstanding event of August 3 was the publication of the German Government's famous apologia for the war, the so-called "White Paper" officially described as "Memorandum and Documents in Relation to the Outbreak of the War." Early in the afternoon a telephone message arrived for me at the Adlon to the effect that if I would call at the Press Bureau of the Foreign Office at five o'clock,</span> <em class="italics">Legationsrat</em> <span>Heilbron, one of Hammann's lieutenants whom I had known for many years, would be glad to deliver me an advance copy for special transmission to London and New York. I lay great stress on the fact that up to sun-down of August 3, 1914, I continued to be</span> <em class="italics">persona gratissima</em> <span>with the Imperial German Government. It was true that one of the young Foreign Office cubs told off to censor press cablegrams at the Main Telegraph Office had, during the preceding three days, expressed annoyance with what he considered my eagerness to "go into details," but</span> <em class="italics">Legationsrat</em><span>Heilbron's invitation to fetch the "White Paper" was gratifying evidence that my relations with the powers-that-be were still "correct," even if not cordial. I was glad of that, because there was constantly in my mind the desire to remain in Germany, whatever happened, with a front-row seat for the big show. At the appointed hour I presented myself in Herr Heilbron's room on the ground floor of the Wilhelmstrasse front of the Foreign Office. He greeted me with old-time courtesy, though I found his demeanor perceptibly depressed. He handed me a copy of the</span> <em class="italics">Denkschrift</em><span>, and, when I begged him for a second one, he complied with a gracious</span> <em class="italics">bitte sehr</em><span>.</span></p>

        <p><span>A London colleague had already intimated to me that the Imperial Chancellor, desiring to place the German case promptly and fully before the British and American publics, would "do his best" with the military authorities who were now in supreme control of the postal telegraph and cable lines to induce them to allow London and New York correspondents to file exhaustive "stories" on the White Paper. As I was sure, however, that Reuter's Agency for England and the Associated Press for America would be handling the affair at great length, my treatment of it was confined, as was usual under such circumstances, to telegraphing a brief introductory summary.</span></p>

        <p><span>What struck me instantly as the hall-marks of the German publication were its treatment of the war as an exclusively Russian-provoked Russo-German affair and its brazenly</span> <em class="italics">ex-parté</em> <span>character--how</span> <em class="italics">ex-parté</em> <span>I did not fully realize till I read England's White Paper a week later. Sir Edward Grey laid his cards on the table, without marginal notes or comment of any kind, and asked the world to pass judgment. Doctor von Bethmann Hollweg's White Paper began with a lengthy plea of justification and ended with quotation of such communications between the Kaiser's Government and its ambassadors and between the German Emperor and the Czar as would most plausibly support the Fatherland's case for war. It was manifestly a biased and incomplete record. It was in fact a doctored record, and suggested that its authors had Bismarck's mutilation of the Ems telegram in mind as a precedent, in emulation of which no German Government could possibly go wrong.</span></p>

        <p><span>Although compiled to include events up to August 1, the German White Paper was silent as the grave in regard to Belgium and the negotiations with the Government of Great Britain. Issued on the night of August 3, when hundreds of thousands of German troops were waiting at Aix-la-Chapelle for the great assault on Liége--if, indeed, at that hour they were not already across the Belgian frontier--this sacred brief designed to establish the Fatherland's case at the bar of world opinion had no single word to say on what was destined to be almost the supreme issue of the war. It was the last word in Imperial German deception. If the German public had known that Sir Edward Grey on July 30 had already "warned Prince Lichnowsky that Germany must not count upon our standing aside in all circumstances," I imagine its bitterness a few nights later, when the fable of England's "treacherous intervention" was sprung upon the deluded Fatherland, might have been less barbaric in its intensity.</span></p>

        <p><span>Next to the omission of all reference to what Sir Edward Grey called Germany's "infamous proposal" for the purchase of British neutrality--a pledge not to despoil France of European territory if England would stand with folded arms while Germany violated Belgium and ravished the French Colonial Empire--the striking feature of the Berlin White Paper was the admission of German-Austrian complicity in the humiliation of Serbia. The Foreign Office, as I have previously explained, had zealously affirmed Germany's entire detachment from Austria's programme for avenging Serajevo. What did the White Paper now tell us? That</span></p>
        <div class="vspace c1"/>
        <p class="pfirst"><span>"Austria had to admit that it would not be consistent either with the dignity or the self-preservation of the Monarchy to look on longer at the operations on the other side of the border without taking action....</span> <em class="italics">We were able to assure our ally most heartily of our agreement with her view of the situation, and to assure her that any action she might consider it necessary to take in order to put an end to the movement in Servia directed against the existence of the Austro-Hungarian Monarchy would receive our approval</em><span>. We were fully aware, in this connection, that warlike moves on the part of Austria-Hungary against Servia would bring Russia into the question, and might draw us into a war in accordance with our duties as an ally."</span></p>
        <div class="vspace c1"/>
        <p class="pfirst"><span>The historic and ineffaceable fact is that Austria--wabbly, invertebrate Austria, which would even to-day, but for Germany, lay prostrate and vanquished--never made a solitary move in the whole plot to coerce Serbia without the full concurrence of the big brother at Berlin. It would be an insult to the intelligence of German diplomacy, stupid as it is, to imagine that the Kaiser's Government sat mute, unconsulted and nonchalant, while Austria worked out a scheme certain, as the Germans themselves admit in their White Paper, to plunge Europe into war.</span></p>

        <p><span>It was my privilege on arriving in the United States on August 22, to furnish the</span> <em class="italics">New York Times</em> <span>with the first copy of the German White Paper to reach the American public. In preparing a prefatory note to accompany the verbatim translation published in next day's paper, I selected the paragraph above quoted as</span> <em class="italics">primâ-facie</em> <span>evidence that the German claim of non-collusion with Austria is subterfuge--to give it the longer and less unparliamentary term.</span></p>

        <p><span>The German White Paper was prepared formally for the information of the Reichstag, which was summoned to meet on Tuesday, August 4 of imperishable memory, for the purpose of voting $325,000,000 of initial war credits. Paris was not won in the expected six weeks, and the Reichstag has voted $7,500,000,000 of war credits up to this writing (September 1, 1915), with melancholy promise of still more to come. The twenty-four hours preceding the war sitting had not been eventless. Monsieur Sverbieff and the staff of the Russian Embassy were the victims of gross insults from the mob in</span> <em class="italics">Unter den Linden</em><span>, as they left their headquarters in automobiles for the railway station. Mounted police were present to "keep order," but their "vigilance" did not deter German men and youths from spitting in the faces of the Czar's representatives, belaboring them with walking-sticks and umbrellas, and offering rowdy indignities to the women of the ambassadorial party. In front of the French Embassy menacing crowds stood throughout the day and night, waiting for a chance to exhibit German patriotism at Monsieur Cambon's expense. When Señor Polê de Bernábe, the Spanish Ambassador, who was calling to arrange to take over the representation of France during the war, made his appearance, the mob mistook him for Cambon and was just prevented in the nick of time from assaulting the Spaniard. How the French Embassy finally got away from Germany, under circumstances which would have shamed a Fiji Island government, was later related for the benefit of posterity in the French</span> <em class="italics">Yellow Book</em><span>. When I read it months later, I remembered my first German teacher in Berlin, a noblewoman, once telling me, when I asked her how to say "gentleman" in German: "There is no such thing as a 'gentleman' in the German language." That was paraphrased to me by another German on a later occasion, when, discussing the ability of German science, so well demonstrated during this war, to devise a substitute for almost anything, he remarked: "The only thing we can't make is a gentleman, because we never had a proper analysis of the necessary ingredients." The Germans, in their communicative moments, always used to acknowledge that Bismarck was right when he called them "a nation of house-servants." It is impressively exemplified on their stage, which boasts the finest character actors imaginable; but when a German player essays to portray the gentleman, he is grotesque. He gropes helplessly in a strange and unexplored realm.</span></p>

        <p><span>On the day before the war session of the Reichstag, the Kaiser, more conscious than ever now of his partnership with Deity, ordained Wednesday, August 5, as a day of universal prayer for the success of German arms. Soon after its proclamation, William II, thunderously acclaimed, appeared in</span> <em class="italics">Unter den Linden</em><span>intermittently, en route to conference with high officers of state. He was clad, like every German soldier one now saw, in field-gray, and ready, one heard, to leave for the front at a moment's notice, to take up his post, assigned him by Hohenzollern warrior traditions, on the battlefield in the midst of his loyal legions. Mobilization was now in full swing, and more and more troops were in evidence, crossing town to railway stations from which they were to be transported east or west, as the Staff's emergencies required. A week before, all these soldiers were in Prussian blue. They were gray now, from head to foot, millions of them. Obviously the clothing department of the army had not been taken by "surprise" by the cruel war "forced" on pacific Germany. Three million uniforms can not be turned out in a whole summer--even in Germany. I thought of this, as gray streams, far into the evening, kept pouring through Berlin, and I thought what a marvelously happy selection that peculiar shade of drab-gray, of almost dust-like invisibility from afar, was for field purposes. To shoot at lines no more colorful than that, it seemed to me, would be like banging away at the horizon itself....</span></p>

        <p><span>History, I suppose, will date Armageddon from August 1, when the German army and navy were mobilized, or perhaps from August 2, when Germany claims that Russia and France fired the first miscreant shots. But the red-letter day of the World Massacre's opening week was beyond all question Tuesday, August 4, which began with the war sitting of the Reichstag and ended with England's declaration of war on Germany. It was destined to be especially big with import for me--of vital import, as events hanging over my unsuspecting head were speedily to reveal.</span></p>

        <p><span>At midday, two hours before the session of the Reichstag in its own chamber, Parliament was "opened" by the Kaiser personally in the celebrated White Hall of the Royal Castle. I had applied for admission after the few available press tickets were already exhausted, but it was not difficult for me to visualize the scene. I had been in the White Hall on several memorable occasions in the past--during the visit of King Edward VII in February, 1909, at a brilliant State banquet and at the ball which followed; at the wedding of the Emperor's daughter, "the sunshine of my House," Princess Victoria Luise, and Duke Ernest August of Brunswick, in May, 1913; and a month later during the Silver Jubilee celebration of the Kaiser's reign, when our own Mr. Carnegie showered plaudits on the Prince of the world's peace. Tower, of</span> <em class="italics">The World</em> <span>and</span> <em class="italics">Daily News</em><span>, was lucky enough to secure a ticket to the Castle ceremonial, and he was bubbling over with excitement at having been privileged to participate in so memorable a function. My old friend, Günther Thomas, late of the</span> <em class="italics">Newyorker-Staatszeitung</em><span>, now joyous in the prospect of joining the German Press Bureau's war staff, came back from the Castle almost pitying me for not having been there. "Wile, I tell you," I can hear him saying now, "it was beautiful, simply beautiful! You missed it! It was enough to make one cry!" Thomas lived in New York seventeen years, but he returned to Germany a more devout Prussian than ever, as a man ought to be whose father fell gloriously at Königgrätz.</span></p>

        <p><span>The description furnished by my English and Prussian colleagues evidently did not exaggerate the splendor and impressiveness of the scene at the White Hall. The Kaiser, in field-general's gray, entered, escorting the Empress. He was solemn, but not anxious-looking. Around the marble-pillared chamber, where only fifteen months before I had seen the Czar and George V of England tripping the minuet with German princesses as the Kaiser's honored guests, were grouped the first men of the Empire. In the places of distinction, closest to the canopied throne, each according to his Court rank, stood the Imperial Chancellor, General von Moltke, Grand-Admiral von Tirpitz and a score of other eminent officers of the civil, naval and military governments. Among the foreign ambassadors only the representatives of Russia and France were missing from their old-time places. Mr. Gerard, modest and retiring as always, amid the glitter of gold lace and brass buttons flashing on all sides, cut a more than ever self-effacing figure in his diplomatic uniform--the plain evening dress of an American gentleman.</span></p>

        <p><span>The Kaiser read his War Speech, which he held in his right hand, while the left firmly gripped his sword-hilt. Beginning in a quiet tone, His Majesty's voice appreciably rose in intensity and volume as he approached the kernel of his message which told how "with a heavy heart I have been compelled to mobilize my army against a neighbor with whom it has fought side by side on so many fields of battle." The Imperial Russian Government, William II went on to say, "yielding to the pressure of an insatiable nationalism, has taken sides with a State which by encouraging criminal attacks has brought on the evil of war." That France, also, the Kaiser continued, "placed herself on the side of our enemies could not surprise us. Too often have our efforts to arrive at friendlier relations with the French Republic come in collision with old hopes and ancient malice." And when the Kaiser had ended, with an invitation to "the leaders of the different parties of the Reichstag" (there were no Socialists present) "to come forward and lay their hands in mine as a pledge," the White Hall reverberated with applause which must have seemed almost indecorous in so august an apartment, but which, no doubt, rang true. It was then, I suppose, that Thomas felt like weeping, and so should I, perhaps, had I been there. The Kaiser, his handshaking-bee over, strode from the scene amid an awesome silence, and the statesmen, the generals and the admirals went their respective ways. All was now in readiness for the real Reichstag session, in which words of deathless significance were to fall from the Chancellor's lips.</span></p>

        <p><span>We were accustomed to sardine-box conditions in the always overcrowded press gallery of the Reichstag on "great days," but to-day we were piled on top of one another in closer formation even than a Prussian infantry platoon in the charge. Familiar faces were missing. Comert, of</span> <em class="italics">Le Temps</em><span>, Caro, of</span> <em class="italics">Le Matin</em><span>, and Bonnefon, of</span> <em class="italics">Le Figaro</em><span>, were not there. They had escaped, we were glad to hear, by one of the very last trains across the French frontier. Löwenton (a brother of Madame Nazimoff), Grossmann, Markoff and Melnikoff, our long-time Russian colleagues, were absent, too. Had they gained Wirballen in time, we wondered, or were they languishing in Spandau?</span></p>

        <p><span>Doctor Paul Goldmann,</span> <em class="italics">doyén</em> <span>of our Berlin corps, was in his accustomed seat, beaming consciously, as became, at such an hour, the correspondent-in-chief of the great allied Vienna</span> <em class="italics">Neue Freie Presse</em><span>. The British and American contingents were on hand in force. Never had we waited for a</span> <em class="italics">Kanzlerrede</em> <span>in such electric expectancy. "Copy" in plenty, such as none of us had ever telegraphed before, was about to be made. Goldmann, a Foreign Office favorite, as well as the all-around most popular foreign journalist in Berlin, may have had an advance hint what was coming, as he frequently did, but to the vast majority of us--British, American, Swedish, Dutch, Italian, Swiss, Spanish and Danish, sandwiched there in the</span> <em class="italics">Pressloge</em> <span>so closely that we could hear, but not move--I am certain that the momentous words and extraordinary scenes about to ensue came as a staggering revelation.</span></p>

        <p><span>Doctor von Bethmann Hollweg, who is flattered when told that he looks like Abraham Lincoln--the resemblance ends there--began speaking at three-fifteen o'clock. Gaunt and fatigued, he tugged nervously at the portfolio of documents on the desk in front of him during the brief introductory remarks of the President of the House, the patriarchal, white-bearded Doctor Kaempf. The Chancellor's manner gave no indication that before he resumed his seat he would rise to heights of oratorical fire of which no one ever thought that "incarnation of passionate doctrinarianism" capable. What he said is known to all the world now; how, in Bismarckian accents, he thundered that "we are in a state of self-defense and necessity knows no law!" How he confessed that "our troops, which have already occupied Luxemburg, may perhaps already have set foot on Belgian territory." How he acknowledged, in a succeeding phrase, to Germany's eternal guilt, that "that violates international law." How he proclaimed the amazing doctrine that, confronted by such emergencies as Germany now was, she had but one duty--"to hack her way through, even though--I say it quite frankly--we are doing wrong!" Our heads, I think, fairly swam as the terrible portent of these words sank into our consciousness. "Our troops may perhaps already have set foot on Belgian soil." That meant one thing, with absolute certainty. It denoted war with England. Trifles have a habit at such moments of lodging themselves firmly in one's mind; and I remember distinctly how, when I heard Bethmann Hollweg fling that challenge forth, I leaned over impulsively to my Swedish friend, Siosteen, of the</span> <em class="italics">Goteborg Tidningen</em><span>, and whispered: "That settles it. England's in it now, too." Siosteen nods an excited assent. It is in the midst of one of the frequent intervals in which the House, floor and galleries alike, is now venting its impassioned approval of the Chancellor's words. I had heard Bülow and Bebel and Bethmann Hollweg himself, times innumerable, set the Reichstag rocking with fervid demonstrations of approval or hostility, but never has it throbbed with such life as to-day. It is the incarnation of the inflamed war spirit of the land. The more defiant the Chancellor's diction, the more fervid the applause it evokes. "</span><em class="italics">Sehr richtig! Sehr richtig!</em><span>" the House shrieks back at him in chorus as he details, step by step, how Germany has been "forced" to draw her terrible sword to beat back the "Russian mobilization menace," how she has tried and failed to bargain with England and Belgium, how she has kept the dogs of war chained to the last, and only released them now when destruction, imminent and certain, is upon her.</span></p>

        <p><span>All eyes in the Press Gallery are riveted on the broad left arc of the floor usurped by the one hundred and eleven Social Democratic deputies of the House of three hundred and ninety-seven members. For the first time in German history their cheers are mingling with those of other parties in support of a Government policy. That, after the Belgian revelation, is beyond all question the dominating feature of a scene tremendous with meaning in countless respects. There is nothing perfunctory about the "Reds'" enthusiasm; that is plain. It is real, spontaneous, universal. No man of them keeps his seat. All are on their feet, succumbing to the engulfing magnitude of the moment. That, it instantly occurs to us, means much to Germany at such an hour. It means that the hope which more than one of the Fatherland's prospective foes in years gone by has fondly cherished, of Socialist revolt in the hour of Germany's peril, was illusory hope. The Chancellor knows what it means. "Our army is in the field!" he declares, trembling with emotion. "Our fleet is ready for battle! The whole German nation stands behind them!" As one man, the entire Reichstag now rises, shouting its approval of these historic words in tones of frenzied exaltation. For two full minutes pandemonium reigns unchecked. Bethmann Hollweg is turning to the Social Democrats. His fist is clenched and he brandishes it in their direction--not in anger this time, but in triumph--and, as if he were proclaiming the proud sentiment for all the world to hear, he exclaims, at the top of his voice, "Yea, the whole nation!" Thus was Armageddon born. Germany, all present knew, would be at war before another sun had gone down, not only with Russia and France, but with England, and, of course, with Belgium, too.</span></p>

        <p><span>"Supposing the Belgians resist?" I asked Schmidt, of the</span> <em class="italics">B. Z. am Mittag</em><span>, a German colleague whom I once christened Berlin's "star" reporter, as we wandered, thinking hard, back to</span> <em class="italics">Unter den Linden</em><span>.</span></p>

        <p><span>"Resist?" he replied, half pitying the feeble-mindedness which prompted such a question. "We shall simply spill them into the ocean."</span></p>
    </div>
    <script>
        var target = document.getElementById("target");
        var style = target.style;

        function test() {
            style.display = "block";

            style.fontSize = "10px";
            style.width = "280px";
            target.offsetLeft;
            style.width = "300px";
            target.offsetLeft;
            style.width = "290px";
            target.offsetLeft;

            style.fontSize = "12px";
            style.width = "280px";
            target.offsetLeft;
            style.width = "300px";
            target.offsetLeft;
            style.width = "290px";
            target.offsetLeft;

            style.display = "none";
        }

        PerfTestRunner.measureRunsPerSecond({ run: test });
    </script>
</body>
</html>
