{{header}}
{{object 1 0}} <<
  /Type /Catalog
  /Pages 2 0 R
  /AcroForm 6 0 R
  /Names <</JavaScript 13 0 R>>
>>
endobj
{{object 2 0}} <<
  /Type /Pages
  /Count 1
  /Kids [4 0 R]
>>
endobj
{{object 4 0}} <<
  /Type /Page
  /Parent 2 0 R
  /MediaBox [0 0 612 792]
  /CropBox [0 0 612 792]
  /Resources  <<>>
>>
endobj
{{object 6 0}} <<
  /DR <<
    /Font <</Helv 7 0 R>>
  >>
  /DA (/Helv 0 Tf 0 g)
  /Fields [5 0 R]
>>
endobj
{{object 7 0}} <<
  /Type /Font
  /Subtype /Type1
  /BaseFont /Helvetica
  /Encoding /WinAnsiEncoding
>>
endobj
{{object 8 0}} <<
  /Type /XObject
  /Subtype /Form
  /FormType 1
  /Matrix [1 0 0 1 0 0]
  /BBox [0 0 75.907 28.472]
  /Resources  <<
    /Font <</FXF0 7 0 R>>
  >>
>>
stream
q
Q


endstream
endobj
{{object 11 0}} <<
  /Type /Action
  /S /JavaScript
  /JS 50 0 R
>>
endobj
{{object 13 0}} <<
  /Names [(startDelay) 11 0 R]
>>
endobj
{{object 50 0}} <<
>>
stream
function fireTimeOut() {
  app.alert("hello world");
}
function fireInterval() {
  app.alert("goodbye world");
}
var timer = app.setTimeOut("fireTimeOut()", 3000);
var interval = app.setInterval("fireInterval()", 1000);
// Clear timers before they fire.
app.clearTimeOut(timer);
app.clearInterval(interval);
// Check that clearing a cleared timer is ok.
app.clearTimeOut(timer);
app.clearInterval(interval);
// Check that invoking the wrong clear method is ok
var timer = app.setTimeOut("fireTimeOut()", 3000);
var interval = app.setInterval("fireInterval()", 1000);
app.clearTimeOut(interval);
app.clearInterval(timer);
// Check that clearing a non-timer is ok.
app.clearTimeOut({"size": 42});
app.clearInterval({"size": 42});
// Be sure all of this code ran to completion.
app.alert("done");
endstream
endobj
{{xref}}
trailer <<
  /Root 1 0 R
>>
{{startxref}}
%%EOF
