This is an automated email from the ASF dual-hosted git repository.

kenn pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/beam-site.git

commit 1ae06d77888a13c9f767df8e6ed0427b01bb7e4a
Author: Kenneth Knowles <[email protected]>
AuthorDate: Thu Jun 28 20:23:18 2018 -0700

    Regenerate site content
---
 content/documentation/dsls/sql/lexical/index.html  | 573 ++++++++++++++++++++-
 content/documentation/programming-guide/index.html | 103 ++--
 .../get-started/mobile-gaming-example/index.html   |  96 ++--
 3 files changed, 672 insertions(+), 100 deletions(-)

diff --git a/content/documentation/dsls/sql/lexical/index.html 
b/content/documentation/dsls/sql/lexical/index.html
index 35755b6..5caa038 100644
--- a/content/documentation/dsls/sql/lexical/index.html
+++ b/content/documentation/dsls/sql/lexical/index.html
@@ -573,107 +573,652 @@ language, and have the following characteristics:</p>
 <tbody>
 <tr>
 <td>
+A<br />
+ABS<br />
+ABSOLUTE<br />
+ACTION<br />
+ADA<br />
+ADD<br />
+ADMIN<br />
+AFTER<br />
 ALL<br />
+ALLOCATE<br />
+ALLOW<br />
+ALTER<br />
+ALWAYS<br />
 AND<br />
 ANY<br />
+APPLY<br />
+ARE<br />
 ARRAY<br />
+ARRAY_MAX_CARDINALITY<br />
 AS<br />
 ASC<br />
-ASSERT_ROWS_MODIFIED<br />
+ASENSITIVE<br />
+ASSERTION<br />
+ASSIGNMENT<br />
+ASYMMETRIC<br />
 AT<br />
+ATOMIC<br />
+ATTRIBUTE<br />
+ATTRIBUTES<br />
+AUTHORIZATION<br />
+AVG<br />
+BEFORE<br />
+BEGIN<br />
+BEGIN_FRAME<br />
+BEGIN_PARTITION<br />
+BERNOULLI<br />
 BETWEEN<br />
+BIGINT<br />
+BINARY<br />
+BIT<br />
+BLOB<br />
+BOOLEAN<br />
+BOTH<br />
+BREADTH<br />
 BY<br />
+C<br />
+CALL<br />
+CALLED<br />
+CARDINALITY<br />
+CASCADE<br />
+CASCADED<br />
 CASE<br />
 CAST<br />
+CATALOG<br />
+CATALOG_NAME<br />
+CEIL<br />
+CEILING<br />
+CENTURY<br />
+CHAIN<br />
+CHAR<br />
+CHAR_LENGTH<br />
+CHARACTER<br />
+CHARACTER_LENGTH<br />
+CHARACTER_SET_CATALOG<br />
+CHARACTER_SET_NAME<br />
+CHARACTER_SET_SCHEMA<br />
+CHARACTERISTICS<br />
+CHARACTERS<br />
+CHECK<br />
+CLASSIFIER<br />
+CLASS_ORIGIN<br />
+CLOB<br />
+CLOSE<br />
+COALESCE<br />
+COBOL<br />
 COLLATE<br />
+COLLATION<br />
+COLLATION_CATALOG<br />
+COLLATION_NAME<br />
+COLLATION_SCHEMA<br />
+COLLECT<br />
+COLUMN<br />
+COLUMN_NAME<br />
+COMMAND_FUNCTION<br />
+COMMAND_FUNCTION_CODE<br />
+COMMENT<br />
+COMMIT<br />
+COMMITTED<br />
+CONDITION<br />
+CONDITION_NUMBER<br />
+CONNECT<br />
+CONNECTION<br />
+CONNECTION_NAME<br />
+CONSTRAINT<br />
+CONSTRAINT_CATALOG<br />
+CONSTRAINT_NAME<br />
+CONSTRAINT_SCHEMA<br />
+CONSTRAINTS<br />
+CONSTRUCTOR<br />
 CONTAINS<br />
+CONTINUE<br />
+CONVERT<br />
+CORR<br />
+CORRESPONDING<br />
+COUNT<br />
+COVAR_POP<br />
+COVAR_SAMP<br />
 CREATE<br />
 CROSS<br />
 CUBE<br />
+CUME_DIST<br />
 CURRENT<br />
+CURRENT_CATALOG<br />
+CURRENT_DATE<br />
+CURRENT_DEFAULT_TRANSFORM_GROUP<br />
+CURRENT_PATH<br />
+CURRENT_ROLE<br />
+CURRENT_ROW<br />
+CURRENT_SCHEMA<br />
+CURRENT_TIME<br />
+CURRENT_TIMESTAMP<br />
+CURRENT_TRANSFORM_GROUP_FOR_TYPE<br />
+CURRENT_USER<br />
+CURSOR<br />
+CURSOR_NAME<br />
+CYCLE<br />
+DATA<br />
+DATABASE<br />
+DATE<br />
+DATETIME_INTERVAL_CODE<br />
+DATETIME_INTERVAL_PRECISION<br />
+DAY<br />
+DEALLOCATE<br />
+DEC<br />
+DECADE<br />
+DECIMAL<br />
+DECLARE<br />
 DEFAULT<br />
+DEFAULTS<br />
+DEFERRABLE<br />
+DEFERRED<br />
 DEFINE<br />
+DEFINED<br />
+DEFINER<br />
+DEGREE<br />
+DELETE<br />
+DENSE_RANK<br />
+DEPTH<br />
+DEREF<br />
+DERIVED<br />
 DESC<br />
+DESCRIBE<br />
+DESCRIPTION<br />
+DESCRIPTOR<br />
+DETERMINISTIC<br />
+DIAGNOSTICS<br />
+DISALLOW<br />
+DISCONNECT<br />
+DISPATCH<br />
 DISTINCT<br />
+DOMAIN<br />
+DOUBLE<br />
+DOW<br />
+DOY<br />
+DROP<br />
+DYNAMIC<br />
+DYNAMIC_FUNCTION<br />
+DYNAMIC_FUNCTION_CODE<br />
+EACH<br />
+ELEMENT<br />
 ELSE<br />
+EMPTY<br />
 END<br />
-</td>
-<td>
-ENUM<br />
+END-EXEC<br />
+END_FRAME<br />
+END_PARTITION<br />
+EPOCH<br />
+EQUALS<br />
 ESCAPE<br />
+EVERY<br />
 EXCEPT<br />
+EXCEPTION<br />
 EXCLUDE<br />
+EXCLUDING<br />
+EXEC<br />
+EXECUTE<br />
 EXISTS<br />
+EXP<br />
+EXPLAIN<br />
+EXTEND<br />
+EXTERNAL<br />
 EXTRACT<br />
 FALSE<br />
 FETCH<br />
+FILTER<br />
+FINAL<br />
+FIRST<br />
+FIRST_VALUE<br />
+FLOAT<br />
+FLOOR<br />
 FOLLOWING<br />
 FOR<br />
+FOREIGN<br />
+FORTRAN<br />
+FOUND<br />
+FRAC_SECOND<br />
+FRAME_ROW<br />
+FREE<br />
 FROM<br />
 FULL<br />
+FUNCTION<br />
+FUSION<br />
+G<br />
+GENERAL<br />
+GENERATED<br />
+GEOMETRY<br />
+GET<br />
+GLOBAL<br />
+GO<br />
+GOTO<br />
+GRANT<br />
+GRANTED<br />
 GROUP<br />
 GROUPING<br />
 GROUPS<br />
-HASH<br />
 HAVING<br />
+HIERARCHY<br />
+HOLD<br />
+HOUR<br />
+IDENTITY<br />
 IF<br />
-IGNORE<br />
+IMMEDIATE<br />
+IMMEDIATELY<br />
+IMPLEMENTATION<br />
+IMPORT<br />
 IN<br />
+INCLUDING<br />
+INCREMENT<br />
+INDICATOR<br />
+INITIAL<br />
+INITIALLY<br />
 INNER<br />
+INOUT<br />
+INPUT<br />
+INSENSITIVE<br />
+INSERT<br />
+INSTANCE<br />
+INSTANTIABLE<br />
+INT<br />
+INTEGER<br />
 INTERSECT<br />
+INTERSECTION<br />
 INTERVAL<br />
 INTO<br />
-</td>
-<td>
+INVOKER<br />
 IS<br />
+ISOLATION<br />
+JAVA<br />
 JOIN<br />
+JSON<br />
+K<br />
+KEY<br />
+KEY_MEMBER<br />
+KEY_TYPE<br />
+LABEL<br />
+LAG<br />
+LANGUAGE<br />
+LARGE<br />
+LAST<br />
+LAST_VALUE<br />
 LATERAL<br />
+LEAD<br />
+LEADING<br />
 LEFT<br />
+LENGTH<br />
+LEVEL<br />
+LIBRARY<br />
 LIKE<br />
+LIKE_REGEX<br />
 LIMIT<br />
-LOOKUP<br />
+LN<br />
+LOCAL<br />
+LOCALTIME<br />
+LOCALTIMESTAMP<br />
+LOCATION<br />
+LOCATOR<br />
+LOWER<br />
+M<br />
+MAP<br />
+MATCH<br />
+MATCHED<br />
+MATCHES<br />
+MATCH_NUMBER<br />
+MATCH_RECOGNIZE<br />
+MAX<br />
+MAXVALUE<br />
+MEASURES<br />
+MEMBER<br />
 MERGE<br />
+MESSAGE_LENGTH<br />
+MESSAGE_OCTET_LENGTH<br />
+MESSAGE_TEXT<br />
+METHOD<br />
+MICROSECOND<br />
+MILLENNIUM<br />
+MIN<br />
+MINUTE<br />
+MINVALUE<br />
+MOD<br />
+MODIFIES<br />
+MODULE<br />
+MONTH<br />
+MORE<br />
+MULTISET<br />
+MUMPS<br />
+NAME<br />
+NAMES<br />
+NATIONAL<br />
 NATURAL<br />
+NCHAR<br />
+NCLOB<br />
+NESTING<br />
+</td>
+<td>
 NEW<br />
+NEXT<br />
 NO<br />
+NONE<br />
+NORMALIZE<br />
+NORMALIZED<br />
 NOT<br />
+NTH_VALUE<br />
+NTILE<br />
 NULL<br />
+NULLABLE<br />
+NULLIF<br />
 NULLS<br />
+NUMBER<br />
+NUMERIC<br />
+OBJECT<br />
+OCCURRENCES_REGEX<br />
+OCTET_LENGTH<br />
+OCTETS<br />
 OF<br />
+OFFSET<br />
+OLD<br />
+OMIT<br />
 ON<br />
+ONE<br />
+ONLY<br />
+OPEN<br />
+OPTION<br />
+OPTIONS<br />
 OR<br />
 ORDER<br />
+ORDERING<br />
+ORDINALITY<br />
+OTHERS<br />
+OUT<br />
 OUTER<br />
+OUTPUT<br />
 OVER<br />
+OVERLAPS<br />
+OVERLAY<br />
+OVERRIDING<br />
+PAD<br />
+PARAMETER<br />
+PARAMETER_MODE<br />
+PARAMETER_NAME<br />
+PARAMETER_ORDINAL_POSITION<br />
+PARAMETER_SPECIFIC_CATALOG<br />
+PARAMETER_SPECIFIC_NAME<br />
+PARAMETER_SPECIFIC_SCHEMA<br />
+PARTIAL<br />
 PARTITION<br />
+PASCAL<br />
+PASSTHROUGH<br />
+PAST<br />
+PATH<br />
+PATTERN<br />
+PER<br />
+PERCENT<br />
+PERCENTILE_CONT<br />
+PERCENTILE_DISC<br />
+PERCENT_RANK<br />
+PERIOD<br />
+PERMUTE<br />
+PLACING<br />
+PLAN<br />
+PLI<br />
+PORTION<br />
+POSITION<br />
+POSITION_REGEX<br />
+POWER<br />
+PRECEDES<br />
 PRECEDING<br />
-PROTO<br />
+PRECISION<br />
+PREPARE<br />
+PRESERVE<br />
+PREV<br />
+PRIMARY<br />
+PRIOR<br />
+PRIVILEGES<br />
+PROCEDURE<br />
+PUBLIC<br />
+QUARTER<br />
 RANGE<br />
-</td>
-<td>
+RANK<br />
+READ<br />
+READS<br />
+REAL<br />
 RECURSIVE<br />
-RESPECT<br />
+REF<br />
+REFERENCES<br />
+REFERENCING<br />
+REGR_AVGX<br />
+REGR_AVGY<br />
+REGR_COUNT<br />
+REGR_INTERCEPT<br />
+REGR_R2<br />
+REGR_SLOPE<br />
+REGR_SXX<br />
+REGR_SXY<br />
+REGR_SYY<br />
+RELATIVE<br />
+RELEASE<br />
+REPEATABLE<br />
+REPLACE<br />
+RESET<br />
+RESTART<br />
+RESTRICT<br />
+RESULT<br />
+RETURN<br />
+RETURNED_CARDINALITY<br />
+RETURNED_LENGTH<br />
+RETURNED_OCTET_LENGTH<br />
+RETURNED_SQLSTATE<br />
+RETURNS<br />
+REVOKE<br />
 RIGHT<br />
+ROLE<br />
+ROLLBACK<br />
 ROLLUP<br />
+ROUTINE<br />
+ROUTINE_CATALOG<br />
+ROUTINE_NAME<br />
+ROUTINE_SCHEMA<br />
+ROW<br />
+ROW_COUNT<br />
+ROW_NUMBER<br />
 ROWS<br />
+RUNNING<br />
+SAVEPOINT<br />
+SCALE<br />
+SCHEMA<br />
+SCHEMA_NAME<br />
+SCOPE<br />
+SCOPE_CATALOGS<br />
+SCOPE_NAME<br />
+SCOPE_SCHEMA<br />
+SCROLL<br />
+SEARCH<br />
+SECOND<br />
+SECTION<br />
+SECURITY<br />
+SEEK<br />
 SELECT<br />
+SELF<br />
+SENSITIVE<br />
+SEQUENCE<br />
+SERIALIZABLE<br />
+SERVER<br />
+SERVER_NAME<br />
+SESSION<br />
+SESSION_USER<br />
 SET<br />
+SETS<br />
+MINUS<br />
+SHOW<br />
+SIMILAR<br />
+SIMPLE<br />
+SIZE<br />
+SKIP<br />
+SMALLINT<br />
 SOME<br />
-STRUCT<br />
+SOURCE<br />
+SPACE<br />
+SPECIFIC<br />
+SPECIFIC_NAME<br />
+SPECIFICTYPE<br />
+SQL<br />
+SQLEXCEPTION<br />
+SQLSTATE<br />
+SQLWARNING<br />
+SQL_BIGINT<br />
+SQL_BINARY<br />
+SQL_BIT<br />
+SQL_BLOB<br />
+SQL_BOOLEAN<br />
+SQL_CHAR<br />
+SQL_CLOB<br />
+SQL_DATE<br />
+SQL_DECIMAL<br />
+SQL_DOUBLE<br />
+SQL_FLOAT<br />
+SQL_INTEGER<br />
+SQL_INTERVAL_DAY<br />
+SQL_INTERVAL_DAY_TO_HOUR<br />
+SQL_INTERVAL_DAY_TO_MINUTE<br />
+SQL_INTERVAL_DAY_TO_SECOND<br />
+SQL_INTERVAL_HOUR<br />
+SQL_INTERVAL_HOUR_TO_MINUTE<br />
+SQL_INTERVAL_HOUR_TO_SECOND<br />
+SQL_INTERVAL_MINUTE<br />
+SQL_INTERVAL_MINUTE_TO_SECOND<br />
+SQL_INTERVAL_MONTH<br />
+SQL_INTERVAL_SECOND<br />
+SQL_INTERVAL_YEAR<br />
+SQL_INTERVAL_YEAR_TO_MONTH<br />
+SQL_LONGVARBINARY<br />
+SQL_LONGVARCHAR<br />
+SQL_LONGVARNCHAR<br />
+SQL_NCHAR<br />
+SQL_NCLOB<br />
+SQL_NUMERIC<br />
+SQL_NVARCHAR<br />
+SQL_REAL<br />
+SQL_SMALLINT<br />
+SQL_TIME<br />
+SQL_TIMESTAMP<br />
+SQL_TINYINT<br />
+SQL_TSI_DAY<br />
+SQL_TSI_FRAC_SECOND<br />
+SQL_TSI_HOUR<br />
+SQL_TSI_MICROSECOND<br />
+SQL_TSI_MINUTE<br />
+SQL_TSI_MONTH<br />
+SQL_TSI_QUARTER<br />
+SQL_TSI_SECOND<br />
+SQL_TSI_WEEK<br />
+SQL_TSI_YEAR<br />
+SQL_VARBINARY<br />
+SQL_VARCHAR<br />
+SQRT<br />
+START<br />
+STATE<br />
+STATEMENT<br />
+STATIC<br />
+STDDEV_POP<br />
+STDDEV_SAMP<br />
+STREAM<br />
+STRUCTURE<br />
+STYLE<br />
+SUBCLASS_ORIGIN<br />
+SUBMULTISET<br />
+SUBSET<br />
+SUBSTITUTE<br />
+SUBSTRING<br />
+SUBSTRING_REGEX<br />
+SUCCEEDS<br />
+SUM<br />
+SYMMETRIC<br />
+SYSTEM<br />
+SYSTEM_TIME<br />
+SYSTEM_USER<br />
+TABLE<br />
+TABLE_NAME<br />
 TABLESAMPLE<br />
+TBLPROPERTIES<br />
+TEMPORARY<br />
 THEN<br />
+TIES<br />
+TIME<br />
+TIMESTAMP<br />
+TIMESTAMPADD<br />
+TIMESTAMPDIFF<br />
+TIMEZONE_HOUR<br />
+TIMEZONE_MINUTE<br />
+TINYINT<br />
 TO<br />
+TOP_LEVEL_COUNT<br />
+TRAILING<br />
+TRANSACTION<br />
+TRANSACTIONS_ACTIVE<br />
+TRANSACTIONS_COMMITTED<br />
+TRANSACTIONS_ROLLED_BACK<br />
+TRANSFORM<br />
+TRANSFORMS<br />
+TRANSLATE<br />
+TRANSLATE_REGEX<br />
+TRANSLATION<br />
 TREAT<br />
+TRIGGER<br />
+TRIGGER_CATALOG<br />
+TRIGGER_NAME<br />
+TRIGGER_SCHEMA<br />
+TRIM<br />
+TRIM_ARRAY<br />
 TRUE<br />
+TRUNCATE<br />
+TYPE<br />
+UESCAPE<br />
 UNBOUNDED<br />
+UNCOMMITTED<br />
+UNDER<br />
 UNION<br />
+UNIQUE<br />
+UNKNOWN<br />
+UNNAMED<br />
 UNNEST<br />
+UPDATE<br />
+UPPER<br />
+UPSERT<br />
+USAGE<br />
+USER<br />
+USER_DEFINED_TYPE_CATALOG<br />
+USER_DEFINED_TYPE_CODE<br />
+USER_DEFINED_TYPE_NAME<br />
+USER_DEFINED_TYPE_SCHEMA<br />
 USING<br />
+VALUE<br />
+VALUES<br />
+VALUE_OF<br />
+VAR_POP<br />
+VAR_SAMP<br />
+VARBINARY<br />
+VARCHAR<br />
+VARYING<br />
+VERSION<br />
+VERSIONING<br />
+VIEW<br />
+WEEK<br />
 WHEN<br />
+WHENEVER<br />
 WHERE<br />
+WIDTH_BUCKET<br />
 WINDOW<br />
 WITH<br />
 WITHIN<br />
+WITHOUT<br />
+WORK<br />
+WRAPPER<br />
+WRITE<br />
+XML<br />
+YEAR<br />
+ZONE<br />
 </td>
 </tr>
 </tbody>
diff --git a/content/documentation/programming-guide/index.html 
b/content/documentation/programming-guide/index.html
index 1899c51..53cafb3 100644
--- a/content/documentation/programming-guide/index.html
+++ b/content/documentation/programming-guide/index.html
@@ -1235,17 +1235,19 @@ The first set of data contains names and email 
addresses. The second set of
 data contains names and phone numbers.
 </span></p>
 
-<div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="kd">final</span> <span 
class="n">List</span><span class="o">&lt;</span><span class="n">KV</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">,</span> 
<span class="n">String</span><span class="o">&gt;&gt;</span> <span 
class="n">emailsList</span> <span class="o">=</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"julia"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">));</span>
-
-<span class="kd">final</span> <span class="n">List</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">String</span><span class="o">&gt;&gt;</span> <span 
class="n">phonesList</span> <span class="o">=</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="s">"111-222-3333"</span><span 
class="o">),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"james"</span><span 
class="o">,</span> <span class="s">"222-333-4444"</span><span 
class="o">),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="s">"333-444-5555"</span><span 
class="o">),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="s">"444-555-6666"</span><span 
class="o">));</span>
+<div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="kd">final</span> <span 
class="n">List</span><span class="o">&lt;</span><span class="n">KV</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">,</span> 
<span class="n">String</span><span class="o">&gt;&gt;</span> <span 
class="n">emailsList</span> <span class="o">=</span>
+    <span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"julia"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="s">"[email protected]"</span><span 
class="o">));</span>
+
+<span class="kd">final</span> <span class="n">List</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">String</span><span class="o">&gt;&gt;</span> <span 
class="n">phonesList</span> <span class="o">=</span>
+    <span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="s">"111-222-3333"</span><span 
class="o">),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"james"</span><span 
class="o">,</span> <span class="s">"222-333-4444"</span><span 
class="o">),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="s">"333-444-5555"</span><span 
class="o">),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="s">"444-555-6666"</span><span 
class="o">));</span>
 
 <span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">String</span><span class="o">&gt;&gt;</span> <span 
class="n">emails</span> <span class="o">=</span> <span class="n">p</span><span 
class="o">.</span><span class="na">apply</span><span class="o">(</span><span 
class="s">"CreateEmails"</span><span class="o">,</span> <span 
class="n">Create</span><span class="o">. [...]
 <span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">String</span><span class="o">&gt;&gt;</span> <span 
class="n">phones</span> <span class="o">=</span> <span class="n">p</span><span 
class="o">.</span><span class="na">apply</span><span class="o">(</span><span 
class="s">"CreatePhones"</span><span class="o">,</span> <span 
class="n">Create</span><span class="o">. [...]
@@ -1275,19 +1277,24 @@ unique key from any of the input collections.</p>
 <div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="kd">final</span> <span 
class="n">TupleTag</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">emailsTag</span> <span class="o">=</span> <span class="k">new</span> 
<span class="n">TupleTag</span><span class="o">&lt;&gt;();</span>
 <span class="kd">final</span> <span class="n">TupleTag</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> 
<span class="n">phonesTag</span> <span class="o">=</span> <span 
class="k">new</span> <span class="n">TupleTag</span><span 
class="o">&lt;&gt;();</span>
 
-<span class="kd">final</span> <span class="n">List</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;&gt;</span> <span 
class="n">expectedResults</span> <span class="o">=</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"amy"</span><span 
class="o">,</span> <span class="n">CoGbkResult</span>
-      <span class="o">.</span><span class="na">of</span><span 
class="o">(</span><span class="n">emailsTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"[email protected]"</span><span class="o">))</span>
-      <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"111-222-3333"</span><span class="o">,</span> <span 
class="s">"333-444-5555"</span><span class="o">))),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"carl"</span><span 
class="o">,</span> <span class="n">CoGbkResult</span>
-      <span class="o">.</span><span class="na">of</span><span 
class="o">(</span><span class="n">emailsTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"[email protected]"</span><span class="o">,</span> <span 
class="s">"[email protected]"</span><span class="o">))</span>
-      <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"444-555-6666"</span><span class="o">))),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"james"</span><span 
class="o">,</span> <span class="n">CoGbkResult</span>
-      <span class="o">.</span><span class="na">of</span><span 
class="o">(</span><span class="n">emailsTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">())</span>
-      <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"222-333-4444"</span><span class="o">))),</span>
-    <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span class="s">"julia"</span><span 
class="o">,</span> <span class="n">CoGbkResult</span>
-      <span class="o">.</span><span class="na">of</span><span 
class="o">(</span><span class="n">emailsTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"[email protected]"</span><span class="o">))</span>
-      <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">())));</span>
+<span class="kd">final</span> <span class="n">List</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;&gt;</span> <span 
class="n">expectedResults</span> <span class="o">=</span>
+    <span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span>
+            <span class="s">"amy"</span><span class="o">,</span>
+            <span class="n">CoGbkResult</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">,</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"[email protected]"</span><span class="o">))</span>
+                <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"111-222-3333"</span><span class="o">,</span> <span 
class="s">"333-444-5555"</span><span class="o">))),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span>
+            <span class="s">"carl"</span><span class="o">,</span>
+            <span class="n">CoGbkResult</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">,</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"[email protected]"</span><span class="o">,</span> <span 
class="s">"[email protected]"</span><span class="o">))</span>
+                <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"444-555-6666"</span><span class="o">))),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span>
+            <span class="s">"james"</span><span class="o">,</span>
+            <span class="n">CoGbkResult</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">,</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">())</span>
+                <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"222-333-4444"</span><span class="o">))),</span>
+        <span class="n">KV</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span>
+            <span class="s">"julia"</span><span class="o">,</span>
+            <span class="n">CoGbkResult</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">,</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span 
class="s">"[email protected]"</span><span class="o">))</span>
+                <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">())));</span>
 </code></pre>
 </div>
 <div class="language-py highlighter-rouge"><pre class="highlight"><code><span 
class="n">results</span> <span class="o">=</span> <span class="p">[</span>
@@ -1312,24 +1319,25 @@ followed by a <code 
class="highlighter-rouge">ParDo</code> to consume the result
 and format data from each collection.</p>
 
 <div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="n">PCollection</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;&gt;</span> <span 
class="n">results</span> <span class="o">=</span>
-    <span class="n">KeyedPCollectionTuple</span>
-    <span class="o">.</span><span class="na">of</span><span 
class="o">(</span><span class="n">emailsTag</span><span class="o">,</span> 
<span class="n">emails</span><span class="o">)</span>
-    <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">phones</span><span class="o">)</span>
-    <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span><span class="n">CoGroupByKey</span><span 
class="o">.</span><span class="na">create</span><span class="o">());</span>
-
-<span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">contactLines</span> <span class="o">=</span> <span 
class="n">results</span><span class="o">.</span><span 
class="na">apply</span><span class="o">(</span><span 
class="n">ParDo</span><span class="o">.</span><span class="na">of</span><span 
class="o">(</span>
-  <span class="k">new</span> <span class="n">DoFn</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;,</span> <span 
class="n">String</span><span class="o">&gt;()</span> <span class="o">{</span>
-    <span class="nd">@ProcessElement</span>
-    <span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">processElement</span><span class="o">(</span><span 
class="n">ProcessContext</span> <span class="n">c</span><span 
class="o">)</span> <span class="o">{</span>
-      <span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;</span> <span 
class="n">e</span> <span class="o">=</span> <span class="n">c</span><span 
class="o">.</span><span class="na">element</span><span class="o">();</span>
-      <span class="n">String</span> <span class="n">name</span> <span 
class="o">=</span> <span class="n">e</span><span class="o">.</span><span 
class="na">getKey</span><span class="o">();</span>
-      <span class="n">Iterable</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">emailsIter</span> <span class="o">=</span> <span 
class="n">e</span><span class="o">.</span><span class="na">getValue</span><span 
class="o">().</span><span class="na">getAll</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">);</span>
-      <span class="n">Iterable</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">phonesIter</span> <span class="o">=</span> <span 
class="n">e</span><span class="o">.</span><span class="na">getValue</span><span 
class="o">().</span><span class="na">getAll</span><span class="o">(</span><span 
class="n">phonesTag</span><span class="o">);</span>
-      <span class="n">String</span> <span class="n">formattedResult</span> 
<span class="o">=</span> <span class="n">Snippets</span><span 
class="o">.</span><span class="na">formatCoGbkResults</span><span 
class="o">(</span><span class="n">name</span><span class="o">,</span> <span 
class="n">emailsIter</span><span class="o">,</span> <span 
class="n">phonesIter</span><span class="o">);</span>
-      <span class="n">c</span><span class="o">.</span><span 
class="na">output</span><span class="o">(</span><span 
class="n">formattedResult</span><span class="o">);</span>
-    <span class="o">}</span>
-  <span class="o">}</span>
-<span class="o">));</span>
+    <span class="n">KeyedPCollectionTuple</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">,</span> <span 
class="n">emails</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">and</span><span 
class="o">(</span><span class="n">phonesTag</span><span class="o">,</span> 
<span class="n">phones</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span><span class="n">CoGroupByKey</span><span 
class="o">.</span><span class="na">create</span><span class="o">());</span>
+
+<span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">contactLines</span> <span class="o">=</span>
+    <span class="n">results</span><span class="o">.</span><span 
class="na">apply</span><span class="o">(</span>
+        <span class="n">ParDo</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span>
+            <span class="k">new</span> <span class="n">DoFn</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;,</span> <span 
class="n">String</span><span class="o">&gt;()</span> <span class="o">{</span>
+              <span class="nd">@ProcessElement</span>
+              <span class="kd">public</span> <span class="kt">void</span> 
<span class="nf">processElement</span><span class="o">(</span><span 
class="n">ProcessContext</span> <span class="n">c</span><span 
class="o">)</span> <span class="o">{</span>
+                <span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">CoGbkResult</span><span class="o">&gt;</span> <span 
class="n">e</span> <span class="o">=</span> <span class="n">c</span><span 
class="o">.</span><span class="na">element</span><span class="o">();</span>
+                <span class="n">String</span> <span class="n">name</span> 
<span class="o">=</span> <span class="n">e</span><span class="o">.</span><span 
class="na">getKey</span><span class="o">();</span>
+                <span class="n">Iterable</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> 
<span class="n">emailsIter</span> <span class="o">=</span> <span 
class="n">e</span><span class="o">.</span><span class="na">getValue</span><span 
class="o">().</span><span class="na">getAll</span><span class="o">(</span><span 
class="n">emailsTag</span><span class="o">);</span>
+                <span class="n">Iterable</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span> 
<span class="n">phonesIter</span> <span class="o">=</span> <span 
class="n">e</span><span class="o">.</span><span class="na">getValue</span><span 
class="o">().</span><span class="na">getAll</span><span class="o">(</span><span 
class="n">phonesTag</span><span class="o">);</span>
+                <span class="n">String</span> <span 
class="n">formattedResult</span> <span class="o">=</span>
+                    <span class="n">Snippets</span><span 
class="o">.</span><span class="na">formatCoGbkResults</span><span 
class="o">(</span><span class="n">name</span><span class="o">,</span> <span 
class="n">emailsIter</span><span class="o">,</span> <span 
class="n">phonesIter</span><span class="o">);</span>
+                <span class="n">c</span><span class="o">.</span><span 
class="na">output</span><span class="o">(</span><span 
class="n">formattedResult</span><span class="o">);</span>
+              <span class="o">}</span>
+            <span class="o">}));</span>
 </code></pre>
 </div>
 <div class="language-py highlighter-rouge"><pre class="highlight"><code><span 
class="c"># The result PCollection contains one key-value element for each key 
in the</span>
@@ -1351,11 +1359,12 @@ and format data from each collection.</p>
 
 <p>The formatted data looks like this:</p>
 
-<div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="kd">final</span> <span 
class="n">List</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">formattedResults</span> <span class="o">=</span> <span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
-    <span class="s">"amy; ['[email protected]']; ['111-222-3333', 
'333-444-5555']"</span><span class="o">,</span>
-    <span class="s">"carl; ['[email protected]', '[email protected]']; 
['444-555-6666']"</span><span class="o">,</span>
-    <span class="s">"james; []; ['222-333-4444']"</span><span 
class="o">,</span>
-    <span class="s">"julia; ['[email protected]']; []"</span><span 
class="o">);</span>
+<div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="kd">final</span> <span 
class="n">List</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">&gt;</span> <span 
class="n">formattedResults</span> <span class="o">=</span>
+    <span class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span>
+        <span class="s">"amy; ['[email protected]']; ['111-222-3333', 
'333-444-5555']"</span><span class="o">,</span>
+        <span class="s">"carl; ['[email protected]', '[email protected]']; 
['444-555-6666']"</span><span class="o">,</span>
+        <span class="s">"james; []; ['222-333-4444']"</span><span 
class="o">,</span>
+        <span class="s">"julia; ['[email protected]']; []"</span><span 
class="o">);</span>
 </code></pre>
 </div>
 <div class="language-py highlighter-rouge"><pre class="highlight"><code><span 
class="n">formatted_results</span> <span class="o">=</span> <span 
class="p">[</span>
diff --git a/content/get-started/mobile-gaming-example/index.html 
b/content/get-started/mobile-gaming-example/index.html
index bde29e1..314599c 100644
--- a/content/get-started/mobile-gaming-example/index.html
+++ b/content/get-started/mobile-gaming-example/index.html
@@ -359,8 +359,7 @@ looks more like what is depicted by the red squiggly line 
above the ideal line.<
   <span class="o">}</span>
 
   <span class="nd">@Override</span>
-  <span class="kd">public</span> <span class="n">PCollection</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;</span> <span 
class="nf">expand</span><span class="o">(</span>
-      <span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span> <span 
class="n">gameInfo</span><span class="o">)</span> <span class="o">{</span>
+  <span class="kd">public</span> <span class="n">PCollection</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;</span> <span 
class="nf">expand</span><span class="o">(</span><span 
class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span> <span 
class="n">gameInfo</span><span class="o">)</ [...]
 
     <span class="k">return</span> <span class="n">gameInfo</span>
         <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span>
@@ -792,8 +791,8 @@ ten minutes after data is received.</em></p>
 <p>The following code example shows how <code 
class="highlighter-rouge">LeaderBoard</code> sets the processing time trigger 
to output the data for user scores:</p>
 
 <div class="language-java highlighter-rouge"><pre 
class="highlight"><code><span class="cm">/**
- * Extract user/score pairs from the event stream using processing time, via 
global windowing.
- * Get periodic updates on all users' running scores.
+ * Extract user/score pairs from the event stream using processing time, via 
global windowing. Get
+ * periodic updates on all users' running scores.
  */</span>
 <span class="nd">@VisibleForTesting</span>
 <span class="kd">static</span> <span class="kd">class</span> <span 
class="nc">CalculateUserScores</span>
@@ -806,13 +805,16 @@ ten minutes after data is received.</em></p>
 
   <span class="nd">@Override</span>
   <span class="kd">public</span> <span class="n">PCollection</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;</span> <span 
class="nf">expand</span><span class="o">(</span><span 
class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span> <span 
class="n">input</span><span class="o">)</spa [...]
-    <span class="k">return</span> <span class="n">input</span><span 
class="o">.</span><span class="na">apply</span><span class="o">(</span><span 
class="s">"LeaderboardUserGlobalWindow"</span><span class="o">,</span>
-        <span class="n">Window</span><span class="o">.&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span><span 
class="n">into</span><span class="o">(</span><span class="k">new</span> <span 
class="n">GlobalWindows</span><span class="o">())</span>
-            <span class="c1">// Get periodic results every ten minutes.</span>
-            <span class="o">.</span><span class="na">triggering</span><span 
class="o">(</span><span class="n">Repeatedly</span><span 
class="o">.</span><span class="na">forever</span><span class="o">(</span><span 
class="n">AfterProcessingTime</span><span class="o">.</span><span 
class="na">pastFirstElementInPane</span><span class="o">()</span>
-                <span class="o">.</span><span 
class="na">plusDelayOf</span><span class="o">(</span><span 
class="n">TEN_MINUTES</span><span class="o">)))</span>
-            <span class="o">.</span><span 
class="na">accumulatingFiredPanes</span><span class="o">()</span>
-            <span class="o">.</span><span 
class="na">withAllowedLateness</span><span class="o">(</span><span 
class="n">allowedLateness</span><span class="o">))</span>
+    <span class="k">return</span> <span class="n">input</span>
+        <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span>
+            <span class="s">"LeaderboardUserGlobalWindow"</span><span 
class="o">,</span>
+            <span class="n">Window</span><span class="o">.&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span><span 
class="n">into</span><span class="o">(</span><span class="k">new</span> <span 
class="n">GlobalWindows</span><span class="o">())</span>
+                <span class="c1">// Get periodic results every ten 
minutes.</span>
+                <span class="o">.</span><span 
class="na">triggering</span><span class="o">(</span>
+                    <span class="n">Repeatedly</span><span 
class="o">.</span><span class="na">forever</span><span class="o">(</span>
+                        <span class="n">AfterProcessingTime</span><span 
class="o">.</span><span class="na">pastFirstElementInPane</span><span 
class="o">().</span><span class="na">plusDelayOf</span><span 
class="o">(</span><span class="n">TEN_MINUTES</span><span class="o">)))</span>
+                <span class="o">.</span><span 
class="na">accumulatingFiredPanes</span><span class="o">()</span>
+                <span class="o">.</span><span 
class="na">withAllowedLateness</span><span class="o">(</span><span 
class="n">allowedLateness</span><span class="o">))</span>
         <span class="c1">// Extract and sum username/score pairs from the 
event data.</span>
         <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span><span class="s">"ExtractUserScore"</span><span 
class="o">,</span> <span class="k">new</span> <span 
class="n">ExtractAndSumScore</span><span class="o">(</span><span 
class="s">"user"</span><span class="o">));</span>
   <span class="o">}</span>
@@ -883,17 +885,22 @@ late results.</em></p>
 
   <span class="nd">@Override</span>
   <span class="kd">public</span> <span class="n">PCollection</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;</span> <span 
class="nf">expand</span><span class="o">(</span><span 
class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span> <span 
class="n">infos</span><span class="o">)</spa [...]
-    <span class="k">return</span> <span class="n">infos</span><span 
class="o">.</span><span class="na">apply</span><span class="o">(</span><span 
class="s">"LeaderboardTeamFixedWindows"</span><span class="o">,</span>
-        <span class="n">Window</span><span class="o">.&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span><span 
class="n">into</span><span class="o">(</span><span 
class="n">FixedWindows</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">teamWindowDuration</span><span class="o">))</span>
-            <span class="c1">// We will get early (speculative) results as 
well as cumulative</span>
-            <span class="c1">// processing of late data.</span>
-            <span class="o">.</span><span class="na">triggering</span><span 
class="o">(</span><span class="n">AfterWatermark</span><span 
class="o">.</span><span class="na">pastEndOfWindow</span><span 
class="o">()</span>
-                <span class="o">.</span><span 
class="na">withEarlyFirings</span><span class="o">(</span><span 
class="n">AfterProcessingTime</span><span class="o">.</span><span 
class="na">pastFirstElementInPane</span><span class="o">()</span>
-                    <span class="o">.</span><span 
class="na">plusDelayOf</span><span class="o">(</span><span 
class="n">FIVE_MINUTES</span><span class="o">))</span>
-                <span class="o">.</span><span 
class="na">withLateFirings</span><span class="o">(</span><span 
class="n">AfterProcessingTime</span><span class="o">.</span><span 
class="na">pastFirstElementInPane</span><span class="o">()</span>
-                    <span class="o">.</span><span 
class="na">plusDelayOf</span><span class="o">(</span><span 
class="n">TEN_MINUTES</span><span class="o">)))</span>
-            <span class="o">.</span><span 
class="na">withAllowedLateness</span><span class="o">(</span><span 
class="n">allowedLateness</span><span class="o">)</span>
-            <span class="o">.</span><span 
class="na">accumulatingFiredPanes</span><span class="o">())</span>
+    <span class="k">return</span> <span class="n">infos</span>
+        <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span>
+            <span class="s">"LeaderboardTeamFixedWindows"</span><span 
class="o">,</span>
+            <span class="n">Window</span><span class="o">.&lt;</span><span 
class="n">GameActionInfo</span><span class="o">&gt;</span><span 
class="n">into</span><span class="o">(</span><span 
class="n">FixedWindows</span><span class="o">.</span><span 
class="na">of</span><span class="o">(</span><span 
class="n">teamWindowDuration</span><span class="o">))</span>
+                <span class="c1">// We will get early (speculative) results as 
well as cumulative</span>
+                <span class="c1">// processing of late data.</span>
+                <span class="o">.</span><span 
class="na">triggering</span><span class="o">(</span>
+                    <span class="n">AfterWatermark</span><span 
class="o">.</span><span class="na">pastEndOfWindow</span><span 
class="o">()</span>
+                        <span class="o">.</span><span 
class="na">withEarlyFirings</span><span class="o">(</span>
+                            <span class="n">AfterProcessingTime</span><span 
class="o">.</span><span class="na">pastFirstElementInPane</span><span 
class="o">()</span>
+                                <span class="o">.</span><span 
class="na">plusDelayOf</span><span class="o">(</span><span 
class="n">FIVE_MINUTES</span><span class="o">))</span>
+                        <span class="o">.</span><span 
class="na">withLateFirings</span><span class="o">(</span>
+                            <span class="n">AfterProcessingTime</span><span 
class="o">.</span><span class="na">pastFirstElementInPane</span><span 
class="o">()</span>
+                                <span class="o">.</span><span 
class="na">plusDelayOf</span><span class="o">(</span><span 
class="n">TEN_MINUTES</span><span class="o">)))</span>
+                <span class="o">.</span><span 
class="na">withAllowedLateness</span><span class="o">(</span><span 
class="n">allowedLateness</span><span class="o">)</span>
+                <span class="o">.</span><span 
class="na">accumulatingFiredPanes</span><span class="o">())</span>
         <span class="c1">// Extract and sum teamname/score pairs from the 
event data.</span>
         <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span><span class="s">"ExtractTeamScore"</span><span 
class="o">,</span> <span class="k">new</span> <span 
class="n">ExtractAndSumScore</span><span class="o">(</span><span 
class="s">"team"</span><span class="o">));</span>
   <span class="o">}</span>
@@ -983,23 +990,34 @@ late results.</em></p>
         <span class="n">sumScores</span><span class="o">.</span><span 
class="na">apply</span><span class="o">(</span><span 
class="n">Values</span><span class="o">.</span><span 
class="na">create</span><span class="o">()).</span><span 
class="na">apply</span><span class="o">(</span><span class="n">Mean</span><span 
class="o">.&lt;</span><span class="n">Integer</span><span 
class="o">&gt;</span><span class="n">globally</span><span 
class="o">().</span><span class="na">asSingletonView</span><spa [...]
 
     <span class="c1">// Filter the user sums using the global mean.</span>
-    <span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;</span> <span 
class="n">filtered</span> <span class="o">=</span> <span 
class="n">sumScores</span>
-        <span class="o">.</span><span class="na">apply</span><span 
class="o">(</span><span class="s">"ProcessAndFilter"</span><span 
class="o">,</span> <span class="n">ParDo</span>
-            <span class="c1">// use the derived mean total score as a side 
input</span>
-            <span class="o">.</span><span class="na">of</span><span 
class="o">(</span><span class="k">new</span> <span class="n">DoFn</span><span 
class="o">&lt;</span><span class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;,</span> <span 
class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt; [...]
-              <span class="kd">private</span> <span class="kd">final</span> 
<span class="n">Counter</span> <span class="n">numSpammerUsers</span> <span 
class="o">=</span> <span class="n">Metrics</span><span class="o">.</span><span 
class="na">counter</span><span class="o">(</span><span 
class="s">"main"</span><span class="o">,</span> <span 
class="s">"SpammerUsers"</span><span class="o">);</span>
-              <span class="nd">@ProcessElement</span>
-              <span class="kd">public</span> <span class="kt">void</span> 
<span class="nf">processElement</span><span class="o">(</span><span 
class="n">ProcessContext</span> <span class="n">c</span><span 
class="o">)</span> <span class="o">{</span>
-                <span class="n">Integer</span> <span class="n">score</span> 
<span class="o">=</span> <span class="n">c</span><span class="o">.</span><span 
class="na">element</span><span class="o">().</span><span 
class="na">getValue</span><span class="o">();</span>
-                <span class="n">Double</span> <span class="n">gmc</span> <span 
class="o">=</span> <span class="n">c</span><span class="o">.</span><span 
class="na">sideInput</span><span class="o">(</span><span 
class="n">globalMeanScore</span><span class="o">);</span>
-                <span class="k">if</span> <span class="o">(</span><span 
class="n">score</span> <span class="o">&gt;</span> <span 
class="o">(</span><span class="n">gmc</span> <span class="o">*</span> <span 
class="n">SCORE_WEIGHT</span><span class="o">))</span> <span class="o">{</span>
-                  <span class="n">LOG</span><span class="o">.</span><span 
class="na">info</span><span class="o">(</span><span class="s">"user "</span> 
<span class="o">+</span> <span class="n">c</span><span class="o">.</span><span 
class="na">element</span><span class="o">().</span><span 
class="na">getKey</span><span class="o">()</span> <span class="o">+</span> 
<span class="s">" spammer score "</span> <span class="o">+</span> <span 
class="n">score</span>
-                      <span class="o">+</span> <span class="s">" with mean 
"</span> <span class="o">+</span> <span class="n">gmc</span><span 
class="o">);</span>
-                  <span class="n">numSpammerUsers</span><span 
class="o">.</span><span class="na">inc</span><span class="o">();</span>
-                  <span class="n">c</span><span class="o">.</span><span 
class="na">output</span><span class="o">(</span><span class="n">c</span><span 
class="o">.</span><span class="na">element</span><span class="o">());</span>
-                <span class="o">}</span>
-              <span class="o">}</span>
-            <span class="o">}).</span><span 
class="na">withSideInputs</span><span class="o">(</span><span 
class="n">globalMeanScore</span><span class="o">));</span>
+    <span class="n">PCollection</span><span class="o">&lt;</span><span 
class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;</span> <span 
class="n">filtered</span> <span class="o">=</span>
+        <span class="n">sumScores</span><span class="o">.</span><span 
class="na">apply</span><span class="o">(</span>
+            <span class="s">"ProcessAndFilter"</span><span class="o">,</span>
+            <span class="n">ParDo</span>
+                <span class="c1">// use the derived mean total score as a side 
input</span>
+                <span class="o">.</span><span class="na">of</span><span 
class="o">(</span>
+                    <span class="k">new</span> <span 
class="n">DoFn</span><span class="o">&lt;</span><span class="n">KV</span><span 
class="o">&lt;</span><span class="n">String</span><span class="o">,</span> 
<span class="n">Integer</span><span class="o">&gt;,</span> <span 
class="n">KV</span><span class="o">&lt;</span><span 
class="n">String</span><span class="o">,</span> <span 
class="n">Integer</span><span class="o">&gt;&gt;()</span> <span 
class="o">{</span>
+                      <span class="kd">private</span> <span 
class="kd">final</span> <span class="n">Counter</span> <span 
class="n">numSpammerUsers</span> <span class="o">=</span>
+                          <span class="n">Metrics</span><span 
class="o">.</span><span class="na">counter</span><span class="o">(</span><span 
class="s">"main"</span><span class="o">,</span> <span 
class="s">"SpammerUsers"</span><span class="o">);</span>
+
+                      <span class="nd">@ProcessElement</span>
+                      <span class="kd">public</span> <span 
class="kt">void</span> <span class="nf">processElement</span><span 
class="o">(</span><span class="n">ProcessContext</span> <span 
class="n">c</span><span class="o">)</span> <span class="o">{</span>
+                        <span class="n">Integer</span> <span 
class="n">score</span> <span class="o">=</span> <span class="n">c</span><span 
class="o">.</span><span class="na">element</span><span 
class="o">().</span><span class="na">getValue</span><span class="o">();</span>
+                        <span class="n">Double</span> <span 
class="n">gmc</span> <span class="o">=</span> <span class="n">c</span><span 
class="o">.</span><span class="na">sideInput</span><span 
class="o">(</span><span class="n">globalMeanScore</span><span 
class="o">);</span>
+                        <span class="k">if</span> <span 
class="o">(</span><span class="n">score</span> <span class="o">&gt;</span> 
<span class="o">(</span><span class="n">gmc</span> <span class="o">*</span> 
<span class="n">SCORE_WEIGHT</span><span class="o">))</span> <span 
class="o">{</span>
+                          <span class="n">LOG</span><span 
class="o">.</span><span class="na">info</span><span class="o">(</span>
+                              <span class="s">"user "</span>
+                                  <span class="o">+</span> <span 
class="n">c</span><span class="o">.</span><span class="na">element</span><span 
class="o">().</span><span class="na">getKey</span><span class="o">()</span>
+                                  <span class="o">+</span> <span class="s">" 
spammer score "</span>
+                                  <span class="o">+</span> <span 
class="n">score</span>
+                                  <span class="o">+</span> <span class="s">" 
with mean "</span>
+                                  <span class="o">+</span> <span 
class="n">gmc</span><span class="o">);</span>
+                          <span class="n">numSpammerUsers</span><span 
class="o">.</span><span class="na">inc</span><span class="o">();</span>
+                          <span class="n">c</span><span 
class="o">.</span><span class="na">output</span><span class="o">(</span><span 
class="n">c</span><span class="o">.</span><span class="na">element</span><span 
class="o">());</span>
+                        <span class="o">}</span>
+                      <span class="o">}</span>
+                    <span class="o">})</span>
+                <span class="o">.</span><span 
class="na">withSideInputs</span><span class="o">(</span><span 
class="n">globalMeanScore</span><span class="o">));</span>
     <span class="k">return</span> <span class="n">filtered</span><span 
class="o">;</span>
   <span class="o">}</span>
 <span class="o">}</span>

Reply via email to