text:
using Andi.Controls;
using Andi.Controls.TabControl;
using Andi.Libs.HexBox;

namespace Andi.Toolkit._un
{
    partial class vPWTSB
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.toolStrip1 = new System.Windows.Forms.ToolStrip();
            this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
            this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
            this.splitContainer1 = new System.Windows.Forms.SplitContainer();
            this.andiListBox1 = new AndiListBox();
            this.andiImageComboBox1 = new AndiImageComboBox();
            this.andiCustomTabControl1 = new AndiCustomTabControl();
            this.tabPage1 = new System.Windows.Forms.TabPage();
            this.andiGroupBox1 = new AndiGroupBox();
            this.textBox4 = new System.Windows.Forms.TextBox();
            this.label4 = new System.Windows.Forms.Label();
            this.label3 = new System.Windows.Forms.Label();
            this.textBox3 = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.textBox2 = new System.Windows.Forms.TextBox();
            this.label1 = new System.Windows.Forms.Label();
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.andiGroupBox2 = new AndiGroupBox();
            this.groupBox2 = new System.Windows.Forms.GroupBox();
            this.andiImageComboBox8 = new AndiImageComboBox();
            this.label6 = new System.Windows.Forms.Label();
            this.andiImageComboBox7 = new AndiImageComboBox();
            this.label5 = new System.Windows.Forms.Label();
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.andiImageComboBox6 = new AndiImageComboBox();
            this.andiImageComboBox5 = new AndiImageComboBox();
            this.andiImageComboBox4 = new AndiImageComboBox();
            this.andiImageComboBox3 = new AndiImageComboBox();
            this.andiImageComboBox2 = new AndiImageComboBox();
            this.tabPage2 = new System.Windows.Forms.TabPage();
            this.hexBox1 = new HexBox();
            this.andiImageComboBox9 = new AndiImageComboBox();
            this.checkedListBox1 = new System.Windows.Forms.CheckedListBox();
            this.toolStrip1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
            this.splitContainer1.Panel1.SuspendLayout();
            this.splitContainer1.Panel2.SuspendLayout();
            this.splitContainer1.SuspendLayout();
            this.andiCustomTabControl1.SuspendLayout();
            this.tabPage1.SuspendLayout();
            this.andiGroupBox1.SuspendLayout();
            this.andiGroupBox2.SuspendLayout();
            this.groupBox2.SuspendLayout();
            this.groupBox1.SuspendLayout();
            this.tabPage2.SuspendLayout();
            this.SuspendLayout();
            //
            // toolStrip1
            //
            this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
            this.toolStripButton1,
            this.toolStripButton2});
            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
            this.toolStrip1.Name = "toolStrip1";
            this.toolStrip1.Size = new System.Drawing.Size(507, 25);
            this.toolStrip1.TabIndex = 0;
            this.toolStrip1.Text = "toolStrip1";
            //
            // toolStripButton1
            //
            this.toolStripButton1.Image = global::Andi.Toolkit.Properties.Resources.folder_open;
            this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButton1.Name = "toolStripButton1";
            this.toolStripButton1.Size = new System.Drawing.Size(56, 22);
            this.toolStripButton1.Text = "Open";
            //
            // toolStripButton2
            //
            this.toolStripButton2.Image = global::Andi.Toolkit.Properties.Resources.disk;
            this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
            this.toolStripButton2.Name = "toolStripButton2";
            this.toolStripButton2.Size = new System.Drawing.Size(51, 22);
            this.toolStripButton2.Text = "Save";
            //
            // splitContainer1
            //
            this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
            this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
            this.splitContainer1.Location = new System.Drawing.Point(0, 25);
            this.splitContainer1.Name = "splitContainer1";
            //
            // splitContainer1.Panel1
            //
            this.splitContainer1.Panel1.Controls.Add(this.andiListBox1);
            this.splitContainer1.Panel1.Controls.Add(this.andiImageComboBox1);
            //
            // splitContainer1.Panel2
            //
            this.splitContainer1.Panel2.Controls.Add(this.andiCustomTabControl1);
            this.splitContainer1.Size = new System.Drawing.Size(507, 458);
            this.splitContainer1.SplitterDistance = 156;
            this.splitContainer1.TabIndex = 1;
            //
            // andiListBox1
            //
            this.andiListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
            | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiListBox1.FormattingEnabled = true;
            this.andiListBox1.ItemHeight = 17;
            this.andiListBox1.Location = new System.Drawing.Point(3, 28);
            this.andiListBox1.Name = "andiListBox1";
            this.andiListBox1.Size = new System.Drawing.Size(150, 427);
            this.andiListBox1.TabIndex = 1;
            //
            // andiImageComboBox1
            //
            this.andiImageComboBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox1.FormattingEnabled = true;
            this.andiImageComboBox1.ItemHeight = 17;
            this.andiImageComboBox1.Location = new System.Drawing.Point(3, 3);
            this.andiImageComboBox1.Name = "andiImageComboBox1";
            this.andiImageComboBox1.Size = new System.Drawing.Size(150, 23);
            this.andiImageComboBox1.TabIndex = 0;
            //
            // andiCustomTabControl1
            //
            this.andiCustomTabControl1.Controls.Add(this.tabPage1);
            this.andiCustomTabControl1.Controls.Add(this.tabPage2);
            //
            //
            //
            this.andiCustomTabControl1.DisplayStyleProvider.BorderColor = System.Drawing.SystemColors.ControlDark;
            this.andiCustomTabControl1.DisplayStyleProvider.BorderColorHot = System.Drawing.SystemColors.ControlDark;
            this.andiCustomTabControl1.DisplayStyleProvider.BorderColorSelected = System.Drawing.Color.FromArgb(((int)(((byte)(127)))), ((int)(((byte)(157)))), ((int)(((byte)(185)))));
            this.andiCustomTabControl1.DisplayStyleProvider.CloserColor = System.Drawing.Color.DarkGray;
            this.andiCustomTabControl1.DisplayStyleProvider.FocusTrack = true;
            this.andiCustomTabControl1.DisplayStyleProvider.HotTrack = true;
            this.andiCustomTabControl1.DisplayStyleProvider.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
            this.andiCustomTabControl1.DisplayStyleProvider.Opacity = 1F;
            this.andiCustomTabControl1.DisplayStyleProvider.Overlap = 0;
            this.andiCustomTabControl1.DisplayStyleProvider.Padding = new System.Drawing.Point(6, 3);
            this.andiCustomTabControl1.DisplayStyleProvider.Radius = 2;
            this.andiCustomTabControl1.DisplayStyleProvider.ShowTabCloser = false;
            this.andiCustomTabControl1.DisplayStyleProvider.TextColor = System.Drawing.SystemColors.ControlText;
            this.andiCustomTabControl1.DisplayStyleProvider.TextColorDisabled = System.Drawing.SystemColors.ControlDark;
            this.andiCustomTabControl1.DisplayStyleProvider.TextColorSelected = System.Drawing.SystemColors.ControlText;
            this.andiCustomTabControl1.HotTrack = true;
            this.andiCustomTabControl1.Location = new System.Drawing.Point(2, 3);
            this.andiCustomTabControl1.Name = "andiCustomTabControl1";
            this.andiCustomTabControl1.SelectedIndex = 0;
            this.andiCustomTabControl1.Size = new System.Drawing.Size(342, 455);
            this.andiCustomTabControl1.TabIndex = 1;
            //
            // tabPage1
            //
            this.tabPage1.Controls.Add(this.andiGroupBox1);
            this.tabPage1.Controls.Add(this.andiGroupBox2);
            this.tabPage1.Location = new System.Drawing.Point(4, 23);
            this.tabPage1.Name = "tabPage1";
            this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage1.Size = new System.Drawing.Size(334, 428);
            this.tabPage1.TabIndex = 0;
            this.tabPage1.Text = "Data";
            this.tabPage1.UseVisualStyleBackColor = true;
            //
            // andiGroupBox1
            //
            this.andiGroupBox1.Controls.Add(this.textBox4);
            this.andiGroupBox1.Controls.Add(this.label4);
            this.andiGroupBox1.Controls.Add(this.label3);
            this.andiGroupBox1.Controls.Add(this.textBox3);
            this.andiGroupBox1.Controls.Add(this.label2);
            this.andiGroupBox1.Controls.Add(this.textBox2);
            this.andiGroupBox1.Controls.Add(this.label1);
            this.andiGroupBox1.Controls.Add(this.textBox1);
            this.andiGroupBox1.Location = new System.Drawing.Point(3, 3);
            this.andiGroupBox1.Name = "andiGroupBox1";
            this.andiGroupBox1.Size = new System.Drawing.Size(325, 73);
            this.andiGroupBox1.TabIndex = 0;
            this.andiGroupBox1.TabStop = false;
            this.andiGroupBox1.Text = "Trainer Data";
            //
            // textBox4
            //
            this.textBox4.Location = new System.Drawing.Point(218, 45);
            this.textBox4.Name = "textBox4";
            this.textBox4.Size = new System.Drawing.Size(58, 20);
            this.textBox4.TabIndex = 7;
            //
            // label4
            //
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(194, 48);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(18, 13);
            this.label4.TabIndex = 6;
            this.label4.Text = "ID";
            //
            // label3
            //
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(158, 22);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(54, 13);
            this.label3.TabIndex = 5;
            this.label3.Text = "Trainer ID";
            //
            // textBox3
            //
            this.textBox3.Location = new System.Drawing.Point(218, 19);
            this.textBox3.Name = "textBox3";
            this.textBox3.Size = new System.Drawing.Size(58, 20);
            this.textBox3.TabIndex = 4;
            //
            // label2
            //
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(103, 48);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(52, 13);
            this.label2.TabIndex = 3;
            this.label2.Text = "Pokemon";
            //
            // textBox2
            //
            this.textBox2.Location = new System.Drawing.Point(39, 45);
            this.textBox2.Name = "textBox2";
            this.textBox2.Size = new System.Drawing.Size(58, 20);
            this.textBox2.TabIndex = 2;
            //
            // label1
            //
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(19, 22);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(14, 13);
            this.label1.TabIndex = 1;
            this.label1.Text = "#";
            //
            // textBox1
            //
            this.textBox1.Location = new System.Drawing.Point(39, 19);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(58, 20);
            this.textBox1.TabIndex = 0;
            //
            // andiGroupBox2
            //
            this.andiGroupBox2.Controls.Add(this.groupBox2);
            this.andiGroupBox2.Controls.Add(this.andiImageComboBox8);
            this.andiGroupBox2.Controls.Add(this.label6);
            this.andiGroupBox2.Controls.Add(this.andiImageComboBox7);
            this.andiGroupBox2.Controls.Add(this.label5);
            this.andiGroupBox2.Controls.Add(this.groupBox1);
            this.andiGroupBox2.Controls.Add(this.andiImageComboBox2);
            this.andiGroupBox2.Location = new System.Drawing.Point(3, 82);
            this.andiGroupBox2.Name = "andiGroupBox2";
            this.andiGroupBox2.Size = new System.Drawing.Size(348, 338);
            this.andiGroupBox2.TabIndex = 0;
            this.andiGroupBox2.TabStop = false;
            this.andiGroupBox2.Text = "Pokemon Data";
            //
            // groupBox2
            //
            this.groupBox2.Controls.Add(this.checkedListBox1);
            this.groupBox2.Location = new System.Drawing.Point(6, 203);
            this.groupBox2.Name = "groupBox2";
            this.groupBox2.Size = new System.Drawing.Size(319, 129);
            this.groupBox2.TabIndex = 8;
            this.groupBox2.TabStop = false;
            this.groupBox2.Text = "EV Spread";
            //
            // andiImageComboBox8
            //
            this.andiImageComboBox8.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox8.FormattingEnabled = true;
            this.andiImageComboBox8.ItemHeight = 17;
            this.andiImageComboBox8.Location = new System.Drawing.Point(83, 167);
            this.andiImageComboBox8.Name = "andiImageComboBox8";
            this.andiImageComboBox8.Size = new System.Drawing.Size(117, 23);
            this.andiImageComboBox8.TabIndex = 7;
            //
            // label6
            //
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(44, 170);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(33, 13);
            this.label6.TabIndex = 6;
            this.label6.Text = "Item :";
            //
            // andiImageComboBox7
            //
            this.andiImageComboBox7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox7.FormattingEnabled = true;
            this.andiImageComboBox7.ItemHeight = 17;
            this.andiImageComboBox7.Location = new System.Drawing.Point(83, 138);
            this.andiImageComboBox7.Name = "andiImageComboBox7";
            this.andiImageComboBox7.Size = new System.Drawing.Size(117, 23);
            this.andiImageComboBox7.TabIndex = 5;
            //
            // label5
            //
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(32, 141);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(45, 13);
            this.label5.TabIndex = 4;
            this.label5.Text = "Nature :";
            //
            // groupBox1
            //
            this.groupBox1.Controls.Add(this.andiImageComboBox6);
            this.groupBox1.Controls.Add(this.andiImageComboBox5);
            this.groupBox1.Controls.Add(this.andiImageComboBox4);
            this.groupBox1.Controls.Add(this.andiImageComboBox3);
            this.groupBox1.Location = new System.Drawing.Point(6, 48);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(319, 80);
            this.groupBox1.TabIndex = 2;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "Move\'s";
            //
            // andiImageComboBox6
            //
            this.andiImageComboBox6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox6.FormattingEnabled = true;
            this.andiImageComboBox6.ItemHeight = 17;
            this.andiImageComboBox6.Location = new System.Drawing.Point(145, 48);
            this.andiImageComboBox6.Name = "andiImageComboBox6";
            this.andiImageComboBox6.Size = new System.Drawing.Size(97, 23);
            this.andiImageComboBox6.TabIndex = 5;
            //
            // andiImageComboBox5
            //
            this.andiImageComboBox5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox5.FormattingEnabled = true;
            this.andiImageComboBox5.ItemHeight = 17;
            this.andiImageComboBox5.Location = new System.Drawing.Point(145, 19);
            this.andiImageComboBox5.Name = "andiImageComboBox5";
            this.andiImageComboBox5.Size = new System.Drawing.Size(97, 23);
            this.andiImageComboBox5.TabIndex = 4;
            //
            // andiImageComboBox4
            //
            this.andiImageComboBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox4.FormattingEnabled = true;
            this.andiImageComboBox4.ItemHeight = 17;
            this.andiImageComboBox4.Location = new System.Drawing.Point(22, 48);
            this.andiImageComboBox4.Name = "andiImageComboBox4";
            this.andiImageComboBox4.Size = new System.Drawing.Size(97, 23);
            this.andiImageComboBox4.TabIndex = 3;
            //
            // andiImageComboBox3
            //
            this.andiImageComboBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox3.FormattingEnabled = true;
            this.andiImageComboBox3.ItemHeight = 17;
            this.andiImageComboBox3.Location = new System.Drawing.Point(22, 19);
            this.andiImageComboBox3.Name = "andiImageComboBox3";
            this.andiImageComboBox3.Size = new System.Drawing.Size(97, 23);
            this.andiImageComboBox3.TabIndex = 2;
            //
            // andiImageComboBox2
            //
            this.andiImageComboBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.andiImageComboBox2.FormattingEnabled = true;
            this.andiImageComboBox2.ItemHeight = 17;
            this.andiImageComboBox2.Location = new System.Drawing.Point(83, 19);
            this.andiImageComboBox2.Name = "andiImageComboBox2";
            this.andiImageComboBox2.Size = new System.Drawing.Size(117, 23);
            this.andiImageComboBox2.TabIndex = 1;
            //
            // tabPage2
            //
            this.tabPage2.Controls.Add(this.hexBox1);
            this.tabPage2.Controls.Add(this.andiImageComboBox9);
            this.tabPage2.Location = new System.Drawing.Point(4, 23);
            this.tabPage2.Name = "tabPage2";
            this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
            this.tabPage2.Size = new System.Drawing.Size(334, 428);
            this.tabPage2.TabIndex = 1;
            this.tabPage2.Text = "HEX";
            this.tabPage2.UseVisualStyleBackColor = true;
            //
            // hexBox1
            //
            this.hexBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
            | System.Windows.Forms.AnchorStyles.Left)
            | System.Windows.Forms.AnchorStyles.Right)));
            this.hexBox1.ColumnInfoVisible = true;
            this.hexBox1.Font = new System.Drawing.Font("Segoe UI", 9F);
            this.hexBox1.HexCasing = HexCasing.Lower;
            this.hexBox1.LineInfoVisible = true;
            this.hexBox1.Location = new System.Drawing.Point(2, 35);
            this.hexBox1.Name = "hexBox1";
            this.hexBox1.ReadOnly = true;
            this.hexBox1.ShadowSelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(60)))), ((int)(((byte)(188)))), ((int)(((byte)(255)))));
            this.hexBox1.Size = new System.Drawing.Size(331, 393);
            this.hexBox1.StringViewVisible = true;
            this.hexBox1.TabIndex = 2;
            this.hexBox1.UseFixedBytesPerLine = true;
            this.hexBox1.VScrollBarVisible = true;
            //
            // andiImageComboBox9
            //
            this.andiImageComboBox9.FormattingEnabled = true;
            this.andiImageComboBox9.ItemHeight = 17;
            this.andiImageComboBox9.Location = new System.Drawing.Point(6, 6);
            this.andiImageComboBox9.Name = "andiImageComboBox9";
            this.andiImageComboBox9.Size = new System.Drawing.Size(181, 23);
            this.andiImageComboBox9.TabIndex = 0;
            //
            // checkedListBox1
            //
            this.checkedListBox1.FormattingEnabled = true;
            this.checkedListBox1.Location = new System.Drawing.Point(16, 19);
            this.checkedListBox1.Name = "checkedListBox1";
            this.checkedListBox1.Size = new System.Drawing.Size(120, 109);
            this.checkedListBox1.TabIndex = 0;
            //
            // vPWTSB
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(507, 483);
            this.Controls.Add(this.splitContainer1);
            this.Controls.Add(this.toolStrip1);
            this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.Name = "vPWTSB";
            this.Text = "vPWTSB";
            this.toolStrip1.ResumeLayout(false);
            this.toolStrip1.PerformLayout();
            this.splitContainer1.Panel1.ResumeLayout(false);
            this.splitContainer1.Panel2.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
            this.splitContainer1.ResumeLayout(false);
            this.andiCustomTabControl1.ResumeLayout(false);
            this.tabPage1.ResumeLayout(false);
            this.andiGroupBox1.ResumeLayout(false);
            this.andiGroupBox1.PerformLayout();
            this.andiGroupBox2.ResumeLayout(false);
            this.andiGroupBox2.PerformLayout();
            this.groupBox2.ResumeLayout(false);
            this.groupBox1.ResumeLayout(false);
            this.tabPage2.ResumeLayout(false);
            this.ResumeLayout(false);
            this.PerformLayout();

        }

        #endregion

        private System.Windows.Forms.ToolStrip toolStrip1;
        private System.Windows.Forms.ToolStripButton toolStripButton1;
        private System.Windows.Forms.ToolStripButton toolStripButton2;
        private System.Windows.Forms.SplitContainer splitContainer1;
        private AndiListBox andiListBox1;
        private AndiImageComboBox andiImageComboBox1;
        private AndiGroupBox andiGroupBox2;
        private System.Windows.Forms.GroupBox groupBox2;
        private AndiImageComboBox andiImageComboBox8;
        private System.Windows.Forms.Label label6;
        private AndiImageComboBox andiImageComboBox7;
        private System.Windows.Forms.Label label5;
        private System.Windows.Forms.GroupBox groupBox1;
        private AndiImageComboBox andiImageComboBox6;
        private AndiImageComboBox andiImageComboBox5;
        private AndiImageComboBox andiImageComboBox4;
        private AndiImageComboBox andiImageComboBox3;
        private AndiImageComboBox andiImageComboBox2;
        private AndiGroupBox andiGroupBox1;
        private System.Windows.Forms.TextBox textBox4;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.TextBox textBox3;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.TextBox textBox2;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.TextBox textBox1;
        private AndiCustomTabControl andiCustomTabControl1;
        private System.Windows.Forms.TabPage tabPage1;
        private System.Windows.Forms.TabPage tabPage2;
        private AndiImageComboBox andiImageComboBox9;
        private HexBox hexBox1;
        private System.Windows.Forms.CheckedListBox checkedListBox1;
    }
}


text:
package org.hl7.fhir.instance.model.valuesets;

// Generated on Tue, Jul 14, 2015 17:35-0400 for FHIR v0.5.0

public enum VisionProduct {

        /**
         * null
         */
        LENS,
        /**
         * null
         */
        CONTACT,
        /**
         * added to help the parsers
         */
        NULL;
        public static VisionProduct fromCode(String codeString) throws Exception {
            if (codeString == null || "".equals(codeString))
                return null;
        if ("lens".equals(codeString))
          return LENS;
        if ("contact".equals(codeString))
          return CONTACT;
        throw new Exception("Unknown VisionProduct code '"+codeString+"'");
        }
        public String toCode() {
          switch (this) {
            case LENS: return "lens";
            case CONTACT: return "contact";
            default: return "?";
          }
        }
        public String getSystem() {
          return "http://hl7.org/fhir/ex-visionprescriptionproduct";
        }
        public String getDefinition() {
          switch (this) {
            case LENS: return "";
            case CONTACT: return "";
            default: return "?";
          }
        }
        public String getDisplay() {
          switch (this) {
            case LENS: return "lens";
            case CONTACT: return "contact";
            default: return "?";
          }
    }

}

redpajama_set_name: RedPajamaGithub


text:
#define _CRT_SECURE_NO_WARNINGS

#define __func__ __FUNCTION__

#define strtok_r strtok_s

#if _MSC_VER <= 1800
#define ALG_VLA_NOT_SUPPORTED
#endif

#define typeof decltype

#endif//_MSC_VER
#endif//__ALGVS_H__


text:
<?php

class WebTest extends PHPUnit_Extensions_Selenium2TestCase
{
    protected $total, $host, $refresh, $cookies;
    protected $account, $accountpath, $password, $passwordpath;
    protected $passwordConfirm, $btnSend, $keyword, $searchBtn;
    protected $periodicalTag, $mySelfFlag, $playerFlag, $songRepeat;
    protected $otherSongListAmount, $collectionAmount, $songListAmount;
    protected $playerMyList, $playerMyCollection, $playertemporaryList;
    protected $playerMyCollectionContent, $playerMyListContent;
    protected $songListTitle, $songListDescription;
    protected $element;

    const CONNECT_TIMEOUT_MS = 500;

/*******************************************************************************
* Setting up elements which used for functions
*/
    public function elementSetUp() {

        $this->account = '';
        $this->password = '';
        $this->songListTitle = '';
        $this->songListDescription = '';
        $this->accountpath = 'account';
        $this->passwordpath = 'password';
        $this->passwordConfirm = 'password_confirm';
        $this->btnSend = 'button-gold';
        $this->periodicalTag = '';
        $this->keyword = 'keyword';
        $this->searchBtn = 'span.icon.icon-header-search';
        $this->songRepeat = 0;
        $this->songListAmount = 0;
        $this->collectionAmount = 0;
        $this->otherSongListAmount = 0;
        $this->mySelfFlag = false;
        $this->playerFlag = 'null';
        $this->playerMyList = 0;
        $this->playerMyCollection = 0;
        $this->playertemporaryList = 0;
        $this->element = '';
    }

/*******************************************************************************
* Waiting for timeout or you can use waitForElement()
*/
    public function wait($second) {
        $this->timeouts()->implicitWait($second * 1000);
    }

/*******************************************************************************
* Counting the float menu
*/
    public function countFloatMenu(){
        return count($this->elements($this->using('xpath')->value('//div[@class="float js-float menu"]/div/div/div/div[2]/ul/li')));
    }

/*******************************************************************************
* Counting the MyList left column content in the player
*/
    public function countPlayerMyListLeftColumnContent() {
        return count($this->elements($this->using('xpath')->value('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li'))) - 1;
    }

/*******************************************************************************
* Counting the MyCollection left column content in the player
*/
    public function countPlayerMyCollectionLeftColumnContent() {
        return count($this->elements($this->using('xpath')->value('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li')));
    }

/*******************************************************************************
* Counting the member songs in a song list
*/
    public function countMemberSong() {
        return count($this->elements($this->using('xpath')->value('//div[@class="compoTable"]/ul/li'))) - 1;
    }

/*******************************************************************************
* Counting the member song lists
*/
    public function countMemberSongList() {
        return count($this->elements($this->using('xpath')->value('//div[@class="listenContentInner clearfix"]/div')));
    }

/*******************************************************************************
* Counting the member collections of other members
*/
    public function countMemberCollection() {
        return count($this->elements($this->using('xpath')->value('//div[@class="listen-list listen-subscribe"]/ul/li')));
    }

/*******************************************************************************
* Counting the menu list at the header of the page
*/
    public function countMenuList() {

        $allMusic = count($this->elements($this->using('xpath')->value('//div[@class="container"]/nav/ul/li[1]/ul/li')));
        $article = count($this->elements($this->using('xpath')->value('//div[@class="container"]/nav/ul/li[2]/ul/li')));
        $periodical = count($this->elements($this->using('xpath')->value('//div[@class="container"]/nav/ul/li[4]/ul/li')));
        $memberCenter = count($this->elements($this->using('xpath')->value('//div[@class="container"]/nav/ul/li[5]/ul/li')));

        $this->total = array(

            'allMusic' => $allMusic,
            'article' => $article,
            'periodical' => $periodical,
            'memberCenter' => $memberCenter,
            'concert' => 1,
            'search' => 1,
            'login' => 1,
            'register' => 1,
            'homepage' => 1,
            'memberProfile' => 1,
            'logout' => 1,
            'payment' => 1,
        );

    }

/*******************************************************************************
* Scrolling down 250 pixels for chrome's view
*/
    public function scrollView() {

                $script = 'window.scrollBy(0, 250)';
                $scroll = array(
                        'script' => $script,
                        'args' => array()
                );

                $this->execute($scroll);

    }

/*******************************************************************************
* Waiting for element for some seconds
*/
    public function waitForElement($selectBy, $element, $second) {

                $this->element = $element;
                switch ($selectBy) {

                        case 'byCssSelector':
                                $this->waitUntil(function () {
                                        if ($this->byCssSelector($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byXPath':
                                $this->waitUntil(function () {
                                        if ($this->byXPath($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byId':
                                $this->waitUntil(function () {
                                        if ($this->byId($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byName':
                                $this->waitUntil(function () {
                                        if ($this->byName($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byLinkText':
                                $this->waitUntil(function () {
                                        if ($this->byLinkText($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byPartialLinkText':
                                $this->waitUntil(function () {
                                        if ($this->byPartialLinkText($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byClassName':
                                $this->waitUntil(function () {
                                        if ($this->byClassName($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        case 'byTag':
                                $this->waitUntil(function () {
                                        if ($this->byTag($this->element)) {
                                                return true;
                                        }
                                        return null;
                                }, $second * 1000);

                                break;
                        default:
                                return null;
                                break;
                }

        }

/*******************************************************************************
* Menu for entering other pages
*/
    public function menu($select, $total, $index) {

        switch ($select) {

            case 'allMusic':

                $this->assertFalse($index > $total || $index <= 0,"all music element does not exist");
                $allMusic = 'li.wide.js-header-listen';
                $this->moveto($this->byCssSelector($allMusic));
                $url = '//div[@class="container"]/nav/ul/li[1]/ul/li['.$index.']/a';
                if(!$this->byXPath($url)->displayed())
                    $this->waitForElement('byXPath', $url, 5);
                $this->byXPath($url)->click();
                $this->refresh();
                break;

            case 'article':

                $this->assertFalse($index > $total || $index <= 0, "article element does not exist");
                $article = 'li.js-header-article';
                $this->moveto($this->byCssSelector($article));
                $url = '//div[@class="container"]/nav/ul/li[2]/ul/li['.$index.']/a';
                if(!$this->byXPath($url)->displayed())
                    $this->waitForElement('byXPath', $url, 5);
                $this->byXPath($url)->click();
                $this->refresh();
                break;

            case 'concert':

                $this->assertEquals(1, $total, "concert element does not exist");
                $url = '//div[@class="container"]/nav/ul/li[3]/a';
                $this->byXPath($url)->click();
                $this->refresh();
                break;

            case 'periodical':

                $this->assertFalse($index > $total || $index <= 0, "periodical element does not exist");
                $periodical = 'li.js-header-periodical';
                $this->moveto($this->byCssSelector($periodical));
                $this->wait(1);
                $url = '//div[@class="container"]/nav/ul/li[4]/ul/li['.$index.']/a';
                if(!$this->byXPath($url)->displayed())
                    $this->waitForElement('byXPath', $url, 5);
                $this->byXPath($url)->click();
                $this->refresh();
                break;

            case 'memberCenter':

                $this->assertFalse($index > $total || $index <= 0, "member center element does not exist");
                $memberCenter = 'li.js-header-member';
                $this->moveto($this->byCssSelector($memberCenter));
                $this->wait(1);
                $url = '//div[@class="container"]/nav/ul/li[5]/ul/li['.$index.']/a';
                if(!$this->byXPath($url)->displayed())
                    $this->waitForElement('byXPath', $url, 5);
                $this->byXPath($url)->click();
                $this->byXPath($url)->click();
                $this->refresh();
                break;

            case 'login':

                $this->assertFalse($this->checkLogin(), "have logged in!");
                $this->cookie()->clear();
                if(!$this->byCssSelector('div.login')->displayed())
                    $this->waitForElement('byCssSelector', 'div.login', 5);
                $this->byCssSelector('div.login > a:nth-child(1)')->click();
                break;

            case 'register':

                $this->assertEquals(1, $total, "register element does not exist");
                if(!$this->byCssSelector('div.login')->displayed())
                    $this->waitForElement('byCssSelector', 'div.login', 5);
                $this->byCssSelector('div.login > a:nth-child(2)')->click();
                break;

            case 'logout':

                $this->assertTrue($this->checkLogin(), "you should login first");
                $this->refresh();
                $this->moveto($this->byClassName('name'));
                $url = '//div[@class="info js-header-info"]/div/a[3]';
                if(!$this->byXPath($url)->displayed())
                    $this->waitForElement('byXPath', $url, 5);
                $this->byXPath($url)->click();
                break;

            case 'homepage':

                $this->assertEquals(1, $total, "homepage element does not exist");
                $url = '//div[@class="container"]/a';
                $this->byXPath($url)->click();
                $this->refresh();
                break;

            case 'memberProfile':

                $this->assertTrue($this->checkLogin(), "you should login first");
                $this->byCssSelector('a.name')->click();
                $this->mySelfFlag = true;
                $this->refresh();
                $this->wait(1);
                $this->countMemberSongList();
                break;

            case 'logout':

                $this->assertTrue($this->checkLogin(), "you should login first");
                $this->refresh();
                $this->moveto($this->byClassName('name'));
                $this->byXPath('//div[@class="info js-header-info"]/div/a[3]')->click();
                break;

            case 'payment':

                $this->assertTrue($this->checkLogin(), "you should login first");
                $this->moveto($this->byClassName('name'));
                $this->byXPath('//div[@class="info js-header-info"]/div/a[2]')->click();
                $this->refresh();
                break;

            default:
                break;
        }
    }

/*******************************************************************************
* Searching for composers or songs
*/
    public function search($string) {

        $this->wait(1);
        $this->byName($this->keyword)->value($string);
        $this->byCssSelector($this->searchBtn)->click();
    }

/*******************************************************************************
* Checking login
*/
    public function checkLogin() {

        $flag = false;

        if($this->cookies['name'] != null || $this->cookies['access'] != null) {
            $this->playerFlag = 'true';
            $flag = true;
        }

        return $flag;
    }

/*******************************************************************************
* Randomly generating a member account
*/
    public function memberAccountGenerate() {

        $length = 10;
        $account = '';

        for($index = 1; $index <= $length; $index++) {
            $choose = rand(1, 3);
            if($choose == 1) {
                $result = chr(rand(97, 122));
            }
            if($choose == 2) {
                $result = chr(rand(65, 90));
            }
            if($choose == 3) {
                $result = rand(0, 9);
            }
            $account .= $result;
        }
        $account .= "@test.com";
        return $account;

    }

/*******************************************************************************
* Randomly generating a member password
*/
    public function memberPasswordGenerate() {

        $length = 10;
        $password = '';
        $word = 'abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ0123456789';
        $len = strlen($word);

        for ($index = 0; $index < $length; $index++) {
            $password .= $word[rand() % $len];
        }

        return $password;
    }

/*******************************************************************************
* Member login
*/

    public function login($account, $password) {

        $this->byId($this->accountpath)->value($account);
        $this->byId($this->passwordpath)->value($password);
        $this->wait(1);
        $this->byClassName($this->btnSend)->click();
        sleep(1);
        $this->refresh();
        $this->wait(1);
        $this->cookies = array('name' => $this->cookie()->get('member_i18n'), 'access' => $this->cookie()->get('access_token'));
    }

/*******************************************************************************
* Registering a member
*/
    public function register($account, $password) {

        $this->byId($this->accountpath)->value($account);
        $this->byId($this->passwordpath)->value($password);
        $this->wait(1);
        $this->byId($this->passwordConfirm)->value($password);
        sleep(1);
        $this->byClassName($this->btnSend)->click();
        $this->wait(1);
        $this->cookies = array('name' => $this->cookie()->get('member_i18n'), 'access' => '');
    }

    public function checkAdOpen(){
        $adDivUrl = 'div.float-upgrade.js-float-upgrade.visible';
        if($this->byCssSelector($adDivUrl)->displayed()) {
            return true;
        }
        else {
            return false;
        }
    }

/*******************************************************************************
* Clicking advertisement
*/
    public function ads() {

        $adDivUrl = 'div.float-upgrade.js-float-upgrade.visible';
        $adElementUrl = '//div[@class="float-upgrade js-float-upgrade visible"]/div/iframe';
        $adDiv = $this->byCssSelector($adDivUrl);
        $adElement = $this->byXPath($adElementUrl);
        if(!$adDiv->displayed()) {
            $this->waitForElement('byCssSelector', $adDivUrl, 5);
            if(!$adElement->displayed()) {
                $this->waitForElement('byXPath', $adElementUrl, 5);
            }
            $this->frame($adElement);
            $this->byXPath('//div[@class="how-do-you-turn-this-on"]/ul/li[1]/div/div/div[1]/a')->click();
        }
        else {
            if(!$adElement->displayed()) {
                $this->waitForElement('byXPath', $adElementUrl, 5);
            }
            $this->frame($adElement);
            $this->byXPath('//div[@class="how-do-you-turn-this-on"]/ul/li[1]/div/div/div[1]/a')->click();
        }
    }

/*******************************************************************************
* Forget password
*/
    public function forgetPassword($account, $password) {

        $this->menu('login', $this->total['login'], 1);
        sleep(1);
        $this->byXPath('//div[@class="forget"]/ul/li[1]/a')->click();
        sleep(2);
        $this->byId($this->accountpath)->value($account);
        $this->byId($this->passwordpath)->value($password);
        $this->byId($this->passwordConfirm)->value($password);
        $this->byClassName($this->btnSend)->click();
    }

/*******************************************************************************
* Selections in member profile page
*/

    public function memberProfileSelect($select) {

        switch ($select) {

            case 'collect':

                $this->assertFalse($this->mySelfFlag, "cannot collect myself");
                $this->byXPath('//div[@class="primary-content js-controller-content"]/section/div[2]/a')->click();
                break;

            case 'songList':

                $this->refresh();
                $url = '//div[@class="primary-content js-controller-content"]/div[1]/a[1]';
                $this->byXPath($url)->click();
                $this->refresh();
                sleep(2);
                $this->songListAmount = $this->countMemberSongList();
                break;

            case 'collection':

                $url = '//div[@class="primary-content js-controller-content"]/div[1]/a[2]';
                $this->byXPath($url)->click();
                $this->refresh();
                sleep(2);
                $this->collectionAmount = $this->countMemberCollection();
                break;

            case 'profile':

                $this->refresh();
                $url = '//div[@class="primary-content js-controller-content"]/div[1]/a[3]';
                $this->byXPath($url)->click();
                $this->wait(0.5);
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Filling a song list title and description
*/
    public function fillSongListTitleAndDescription($title, $description) {

        $this->songListTitle = $title;
        $this->songListDescription = $description;
    }

/*******************************************************************************
* Checking a song list title and description if updated
*/
    public function checkSongList($inputTitle, $inputDescription, $index) {

        $url = '//div[@class="listenContentInner clearfix"]/div['.$index.']/div';
        $getSonglistDiv = $this->byXPath($url);
        $this->moveto($getSonglistDiv);
        $this->waitForElement('byXPath', $url, 5);
        $this->wait(3);
        $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div/div/a[3]')->click();
        $title = $this->byId('playlist_title')->value();
        $description = $this->byId('summary')->text();
        $this->byCssSelector('button.button.button-gold')->click();
        if((strcmp($title, $inputTitle) !== 0) && (strcmp($description, $inputDescription) !== 0)){
            return false;
        }
        else {
            return true;
        }
    }

/*******************************************************************************
* Checking a song list while deleting
*/
    public function checkDeleteSongList($index) {

        $index = $index + 1;
        $url = '//div[@class="listenContentInner clearfix"]/div['.$index.']/div';
        $getSonglistDiv = $this->byXPath($url);
        $this->moveto($getSonglistDiv);
        $this->waitForElement('byXPath', $url, 5);
        $this->wait(3);
        $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div/div/a[3]')->click();
        $title = $this->byId('playlist_title')->value();
        $description = $this->byId('summary')->text();
        $this->byCssSelector('button.button.button-gold')->click();
        return array('title' => $title, 'description' => $description);
    }

/*******************************************************************************
* Operations of a song list
*/
    public function memberSongListOperation($select, $index) {

        sleep(3);
        $this->songListAmount = $this->countMemberSongList();

        switch ($select) {

            case 'new list':

                //--add new song list--//
                $this->assertTrue($this->mySelfFlag, "isn't myself, cannot add new lists");
                $number = $this->songListAmount + 1;
                $this->waitForElement('byCssSelector', 'div.btnAdd.add', '5');
                $this->byCssSelector('div.btnAdd.add')->click();
                $this->wait(0.5);
                $this->byId('playlist_title')->value($this->songListTitle);
                $this->byId('summary')->value($this->songListDescription);
                $this->wait(1);
                $this->byCssSelector('button.button.button-gold')->click();
                $this->songListAmount = $this->songListAmount + 1;
                $this->assertTrue($this->checkSongList($this->songListTitle, $this->songListDescription, $this->songListAmount), "add unsucessfully");
                break;

            case 'edit':

                //edit a song list
                $this->assertTrue($this->mySelfFlag, "isn't myself, cannot edit song lists");
                $this->assertNotEquals(0, $this->songListAmount, "song list is null, you cannot edit");
                $this->assertTrue($index > 0 && $index <= $this->songListAmount && $this->songListAmount > 0 && $this->mySelfFlag == true, "index is less than 0 or myself is false");
                $getSonglistDiv = $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div');
                $this->moveto($getSonglistDiv);
                $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div/div/a[3]')->click();
                $this->byId('playlist_title')->clear();
                $this->byId('playlist_title')->value($this->songListTitle);
                $this->byId('summary')->clear();
                $this->byId('summary')->value($this->songListDescription);
                $this->byCssSelector('button.button.button-gold')->click();
                $this->assertTrue($this->checkSongList($this->songListTitle, $this->songListDescription, $index), "edit unsucessfully");
                sleep(1);
                break;

            case 'copy':

                //copy a song list
                $this->assertNotEquals(0, $this->songListAmount, "song list is null, you cannot copy");
                $this->assertTrue($index > 0 && $index <= $this->songListAmount && $this->songListAmount > 0, "index is less than 0");
                $getSonglistDiv = $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div');
                $this->moveto($getSonglistDiv);
                $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div/div/a[2]')->click();
                $this->byId('playlist_title')->clear();
                $this->byId('playlist_title')->value($this->songListTitle);
                $this->byId('summary')->clear();
                $this->byId('summary')->value($this->songListDescription);
                $this->byCssSelector('button.button.button-gold')->click();
                if($this->mySelfFlag == true) {
                    $this->songListAmount = $this->songListAmount + 1;
                    $this->assertTrue($this->checkSongList($this->songListTitle, $this->songListDescription, $this->songListAmount), "copy unsucessfully");
                }
                else {
                    $this->menu('memberProfile', $this->total['memberProfile'], 1);
                    sleep(2);
                    $this->memberProfileSelect('songList');
                    sleep(2);
                    $this->assertTrue($this->checkSongList($this->songListTitle, $this->songListDescription, $this->songListAmount), "copy unsucessfully");
                }
                break;

            case 'play':

                //play the songs of the song list
                $this->playerFlag = 'temporaryList';
                $this->assertNotEquals(0, $this->songListAmount, "song list is null, you cannot play");
                $this->assertTrue($index > 0 && $index <= $this->songListAmount && $this->songListAmount > 0, "index is less than 0");
                $getSonglistDiv = $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div');
                $this->moveto($getSonglistDiv);
                $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div/div/a[5]')->click();
                break;

            case 'enter':

                //enter the song list
                $this->assertNotEquals(0, $this->songListAmount, "song list is null, you cannot enter");
                $this->assertTrue($index > 0 && $index <= $this->songListAmount && $this->songListAmount > 0, "index is less than 0");
                $getSonglistDiv = $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/a')->click();
                break;

            case 'del':

                //delete the song list
                $this->assertTrue($this->mySelfFlag, "isn't myself , cannot delete song lists");
                $this->assertNotEquals(0, $this->songListAmount, "song list is null, you cannot delete");
                $this->assertTrue($index > 0 && $index <= $this->songListAmount && $this->songListAmount > 0 && $this->mySelfFlag == true, "index is less than 0 or myself is false");

                $this->scrollView();
                $this->byCssSelector('div.btnDelete.remove')->click();
                $this->byXPath('//div[@class="listenContentInner clearfix"]/div['.$index.']/div/a')->click();
                $this->byCssSelector('button.button.button-gold')->click();
                sleep(2);
                $this->songListAmount = $this->countMemberSongList();
                if($index > $this->songListAmount) {
                    break;
                }
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Getting the status code
*/
    public function responseCode($timeout_in_ms, $url) {

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, self::CONNECT_TIMEOUT_MS);
        // There is a PHP bug in some versions which didn't define the constant.
        curl_setopt(
            $ch,
            156, // CURLOPT_CONNECTTIMEOUT_MS
            self::CONNECT_TIMEOUT_MS
        );

        $code = null;

        try {
          curl_exec($ch);
          $info = curl_getinfo($ch);
          $code = $info['http_code'];
        }
        catch (Exception $e) {}

        curl_close($ch);
        return $code;
    }

/*******************************************************************************
* Getting the array of urls which have abnormal status code
*/
    public function getUrlList($url) {

        //get homepage contents
        $homepage = file_get_contents($url);
        mb_convert_encoding($homepage, 'UTF-8');
        //use regex parse http:// or https:// or ftp:// url
        mb_regex_encoding('UTF-8');

        preg_match_all("/(http|https|ftp):\/\/[^<>[:space:]]+[[:alnum:]#?\/&=+%_]/", $homepage, $match);
        $list = $match[0];

        $recordList = Array();

        foreach ($list as $value) {

            //replace '/ and ";var to null string
            $result = preg_replace("/\'\/|\"(;var)/", "", $value);
            $result = utf8_encode($result);
            // use result as url to pass
            $requestcode = strval($this->responseCode(10000, $result));

            if((strpos($requestcode, "4", 0) === 0) ||(strpos($requestcode, "5", 0) === 0)) {
                $temp = array("responseCode" => $requestcode, "url" => $result);
                array_push($recordList, $temp);
            }

        }

        //use regex parse href="" url
        preg_match_all("/(href=\")\/[^<>[:space:]]+[[:alnum:]#?\/&=+%_]/", $homepage, $match1);
        $list1 = $match1[0];

        foreach ($list1 as $value) {

            //replace href=" to null string
            $result = preg_replace("/(href=\")/", "", $value);
            if(preg_match("/\/(tw)\//", $result)||preg_match("/\/(ysm)/", $result)||preg_match("/\/css/", $result)) {
                // combine http://dev.muzik-online.com with \tw\ , \ysm , \css
                $string = utf8_encode('http://dev.muzik-online.com'.$result);
                // use result string as url to pass
                $requestcode = strval($this->responseCode(10000, $string));

                if((strpos($requestcode, "4", 0) === 0) ||(strpos($requestcode, "5", 0) === 0)) {
                    $temp = array("responseCode" => $requestcode, "url" => $string);
                    array_push($recordList, $temp);
                }

            }
            else if(preg_match("/\/(concert)/", $result)||preg_match("/\/(article)/", $result)||preg_match("/\/(listen)/", $result)||preg_match("/\/(download)/", $result)||preg_match("/\/(cashflow)/", $result)||preg_match("/\/(periodical)/", $result)) {
                //combine http://dev.muzik-online.com/tw with \concert , \article , \listen , \download, \cashflow, \periodical
                $string = utf8_encode('http://dev.muzik-online.com/tw'.$result);
                // use result string as url to pass
                $requestcode = strval($this->responseCode(10000, $string));

                if((strpos($requestcode, "4", 0) === 0) ||(strpos($requestcode, "5", 0) === 0)) {
                    $temp = array("responseCode" => $requestcode, "url" => $string);
                    array_push($recordList, $temp);
                }

            }
            else {
                //other website
                $string = utf8_encode('http:'.$result);
                $requestcode = strval($this->responseCode(10000, $string));

                if((strpos($requestcode, "4") === 0) ||(strpos($requestcode, "5") === 0)) {
                    $temp = array("responseCode" => $requestcode, "url" => $string);
                    array_push($recordList, $temp);
                }
            }
        }

        return $recordList;
    }

/*******************************************************************************
* Do the hover on player
*/
    public function playerOpen() {

        $this->moveto($this->byCssSelector('div.player.jp-player'));
        $this->wait(1);
        $this->byXPath('//div[@class="player jp-player over"]/div[1]/div[1]/a')->click();
    }

/*******************************************************************************
* Close the player
*/
    public function playerClose() {

        $this->byCssSelector('a.open.icon.jp-open')->click();
    }

/*******************************************************************************
* Header selections of the player
*/
    public function playerheaderSelect($select) {

        $headerElememts = $this->elements($this->using('css selector')->value('a.item'));
        switch ($select) {

            case 'temporaryList':

                if($this->checkLogin()) {
                    $this->playerFlag = 'temporaryList';
                }
                $this->playertemporaryList = count($this->elements($this->using('xpath')->value('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li')));
                $headerElememts[0]->click();
                break;

            case 'myList':

                if($this->checkLogin()) {
                    $this->playerFlag = 'myList';
                    $this->playerMyList = $this->countPlayerMyListLeftColumnContent();
                }
                $headerElememts[1]->click();
                break;

            case 'myCollection':

                if($this->checkLogin()) {
                    $this->playerFlag = 'myCollection';
                    $this->playerMyCollection = $this->countPlayerMyCollectionLeftColumnContent();
                }
                $headerElememts[2]->click();
                break;

            case 'now playing':

                $headerElememts[3]->click();
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Footer selections of the player
*/
    public function playerfooterSelect($select) {

        $footerLeftElements = $this->elements($this->using('xpath')->value('//div[@class="player jp-player open"]/div[3]/div[1]/ul/li'));

        switch ($select) {

            case 'prev':

                $footerLeftElements[0]->click();
                break;

            case 'play':

                $footerLeftElements[1]->click();
                break;

            case 'pause':

                $footerLeftElements[2]->click();
                break;

            case 'next':

                $footerLeftElements[3]->click();
                break;

            case 'info':

                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[2]/div[3]/ul/li[2]/a')->click();
                break;

            case 'download':

                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[2]/div[3]/ul/li[3]/a')->click();
                break;

            case 'mute':

                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[3]/ul/li[1]/a')->click();
                break;

            case 'unmute':

                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[3]/ul/li[2]/a')->click();
                break;

            case 'repeat':

                $this->songRepeat += 1;
                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[3]/ul/li[4]/a')->click();
                if($this->songRepeat >= 3) {
                    $this->songRepeat = 0;
                }
                break;

            case 'shuffle':

                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[3]/ul/li[5]/a')->click();
                break;

            case 'language':

                $this->byXPath('//div[@class="player jp-player open"]/div[3]/div[3]/ul/li[6]/a')->click();
                break;

            case 'unpin':

                $this->byXPath('//div[@class="player jp-player open"]/div[1]/div[1]/a')->click();
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Choosing the language at the bottom of the player, needed to first select language
*/
    public function chooseLanguage($select) {

        switch ($select) {

            case 'chinese':

                $this->byXPath('//div[@class="float js-float global"]/div[2]/a[1]')->click();
                break;

            case 'english':

                $this->byXPath('//div[@class="float js-float global"]/div[2]/a[3]')->click();
                break;

            case 'japanese':

                $this->byXPath('//div[@class="float js-float global"]/div[2]/a[2]')->click();
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Checking a album or a track
*/
    public function playerCheckAlbum() {

        if($this->byCssSelector('a.close.jp-delete')->displayed() == 1) {
            sleep(1);
            $this->byCssSelector('a.close.jp-delete')->click();
        }
    }

/*******************************************************************************
* Selections of player's MyCollection left content
*/
    public function playerLeftContentMyCollectionSongListSelect($parentIndex, $index) {

        $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$parentIndex.']/ul/li['.$index.']/div/a')->click();
        $songAmount = count($this->elements($this->using('xpath')->value('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li')));
    }

/*******************************************************************************
* Selections of the player's left content
*/
    public function playerLeftContentSelect($select, $index) {

        $this->assertNotEquals($this->playerFlag, 'null', "user does not log in , player flag is null");
        $this->assertNotEquals($this->playerFlag, 'temporaryList', "temporary list does not have left content");

        if($this->playerFlag == 'myList') {
            $this->assertFalse($index > 0 && $this->playerMyList >= $index, "index exceeds the amount");
        }

        else if($this->playerFlag == 'myCollection') {
            $this->assertFalse($index > 0 && $this->playerMyCollection >= $index, "index exceeds the amount");
        }

        switch ($select) {

            case 'choose':

                if($this->playerFlag == 'myList' || $this->playerFlag == 'myCollection') {
                    $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/div[1]/a')->click();
                }
                break;

            case 'del':

                if($this->playerFlag == 'myCollection') {

                    $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/a')->click();
                    sleep(1);
                    $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/div[2]/a')->click();
                }
                else if($this->playerFlag == 'myList') {

                    $this->moveto($this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']'));
                    $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/div[2]/a[2]')->click();
                    sleep(1);
                    $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/div[3]/a')->click();
                }

                break;

            case 'edit':

                $this->assertEquals('myList', $this->playerFlag, "player flag isn't myList");
                $this->moveto($this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']'));
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/div[2]/a[1]')->click();
                sleep(1);
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/form/input')->clear();
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/form/input')->value($this->songListTitle);
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$index.']/form/button')->click();
                break;

            case 'new list':

                $myList = count($this->elements($this->using('xpath')->value('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li')));
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$myList.']/div/a')->click();
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$myList.']/li/form/input')->clear();
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$myList.']/li/form/input')->value($this->songListTitle);
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[1]/div[2]/ul/li['.$myList.']/li/form/button')->click();

                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Operations of the player song content
*/
    public function playerSongContentfunc($select, $index) {

        if($this->playerFlag == 'temporaryList') {
            $this->assertFalse($index > 0 && $this->playertemporaryList >= $index, "index exceeds the amount");
        }
        else if($this->playerFlag == 'myList') {
            $this->assertFalse($index > 0 && $this->playerMyListContent >= $index, "index exceeds the amount");
        }
        else if($this->playerFlag == 'myCollection') {
            $this->assertFalse($index > 0 && $this->playerMyCollectionContent >= $index, "index exceeds the amount");
        }

        switch ($select) {
            case 'play':

                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[1]/a')->click();
                break;

            case 'choose':

                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[2]/a')->click();
                break;

            case 'info':

                $this->moveto($this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div'));
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div/div/a[2]')->click();
                break;

            case 'download':

                $this->moveto($this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div'));
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div/div/a[3]')->click();
                break;

            case 'add to list':

                $this->moveto($this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div'));
                $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div/div/a[4]')->click();
                break;

            case 'del':

                if($this->playerFlag == 'myCollection') {
                    break;
                }
                else {
                    $this->moveto($this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div'));
                    $this->byXPath('//div[@class="player jp-player open"]/div[2]/div[2]/div[2]/div[2]/ul/li['.$index.']/div[3]/div/div/a[5]')->click();
                }
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Selections in a song list page
*/
    public function memberSongListSongSelect($selectFunc, $index) {

        $number = $index + 1;

        $this->refresh();
        //for first li is head title, second li is the first song
        $amount = $this->countMemberSong();
        if($amount == -1) {
            $this->refresh();
            $this->wait(0.5);
            $amount = $this->countMemberSong();
        }

        switch ($selectFunc) {

            case 'play all':

                $this->assertNotEquals(-1, $amount, "have no songs");
                $this->byCssSelector('a.playAll.noSelect.play-all')->click();
                break;

            case 'play':

                $this->assertTrue($number > 1 && $index <= $amount && $amount > 0, "have no songs or index exceeds the amount");
                $this->byXPath('//div[@class="compoTable"]/ul/li['.$number.']/div[4]/a[1]')->click();
                break;

            case 'del':

                $this->assertTrue($number > 1 && $index <= $amount && $amount > 0 && $this->mySelfFlag == true ,"have no songs or index exceeds the amount or myself is false");
                $this->byXPath('//div[@class="compoTable"]/ul/li['.$number.']/div[4]/a[3]')->click();
                break;

            case 'add to list':

                $this->assertTrue($number > 1 && $index <= $amount && $amount > 0, "have no songs or index exceeds the amount");
                $this->byXPath('//div[@class="compoTable"]/ul/li['.$number.']/div[4]/a[2]')->click();
                break;

            case 'info':

                $this->assertTrue($number > 1 && $index <= $amount && $amount > 0, "have no songs or index exceeds the amount");
                $this->byXPath('//div[@class="compoTable"]/ul/li['.$number.']/div[4]/a[4]')->click();
                break;

            case 'download':

                $this->assertTrue($number > 1 && $index <= $amount && $amount > 0, "have no songs or index exceeds the amount");
                $this->byXPath('//div[@class="compoTable"]/ul/li['.$number.']/div[4]/a[5]')->click();
                break;

            default:

                break;
        }
    }

/*******************************************************************************
* Selections of adding to a song list
*/
    public function addToListSelect($listSelect, $index) {
        //three selection : new list, temporary, existed
        switch ($listSelect) {

            case 'new list':

                $number = $this->songListAmount + 1;
                $this->byXPath('//div[@class="float js-float menu"]/div/a[1]')->click();
                $this->wait(0.5);
                $this->byId('playlist_title')->value($this->songListTitle);
                $this->byId('summary')->value($this->songListDescription);
                $this->byCssSelector('button.button.button-gold')->click();
                break;

            case 'temporary list':

                $this->byXPath('//div[@class="float js-float menu"]/div/a[2]')->click();
                break;

            case 'my list':

                $this->assertTrue($index > 0 && $index <= $this->countFloatMenu() && $this->countFloatMenu() > 0,  "have no song lists or index exceeds the amount");
                $this->wait(3);
                $this->byXPath('//div[@class="float js-float menu"]/div/div/div/div[2]/ul/li['.$index.']/a')->click();
                break;

            default:

                break;

        }
    }

/*******************************************************************************
* Selections in member profile of member collection
*/
    public function memberCollection($select, $index) {

        switch ($select) {

            case 'collect'://collect or cancel collect

                $this->assertTrue($index != 0 && $index <= $this->collectionAmount && $this->collectionAmount > 0,  "have no collection or index exceeds the amount");
                $this->byXPath('//div[@class="listen-list listen-subscribe"]/ul/li['.$index.']/a[3]')->click();
                break;

            case 'enter':

                $this->assertTrue($index != 0 && $index <= $this->collectionAmount && $this->collectionAmount > 0,  "have no collection or index exceeds the amount");
                $this->byXPath('//div[@class="listen-list listen-subscribe"]/ul/li['.$index.']/a[1]')->click();
                $this->mySelfFlag = false;
                break;

            default:

                break;
        }
    }
}

?>


text:
@implementation UVArticleViewController {
    UILabel *_footerLabel;
    UIButton *_yes;
    UIButton *_no;
}

- (void)loadView {
    [super loadView];
    [UVBabayaga track:VIEW_ARTICLE id:_article.articleId];
    self.view = [[UIView alloc] initWithFrame:[self contentFrame]];
    self.navigationItem.title = @"";

    CGFloat footerHeight = 46;
    _webView = [UIWebView new];
    NSString *section = _article.topicName ? [NSString stringWithFormat:@"%@ / %@", NSLocalizedStringFromTableInBundle(@"Knowledge Base", @"UserVoice", [UserVoice bundle], nil), _article.topicName] : NSLocalizedStringFromTableInBundle(@"Knowledge base", @"UserVoice", [UserVoice bundle], nil);
    NSString *linkColor;
    if (IOS7) {
        linkColor = [UVUtils colorToCSS:self.view.tintColor];
    } else {
        linkColor = @"default";
    }
    NSString *html = [NSString stringWithFormat:@"<link rel=\"stylesheet\" type=\"text/css\" href=\"http://cdn.uservoice.com/stylesheets/vendor/typeset.css\"/>
%@

%@
%@", linkColor, section, _article.question, _article.answerHTML];
    _webView.backgroundColor = [UIColor whiteColor];
    for (UIView* shadowView in [[_webView scrollView] subviews]) {
        if ([shadowView isKindOfClass:[UIImageView class]]) {
            [shadowView setHidden:YES];
        }
    }
    [_webView loadHTMLString:html baseURL:nil];
    _webView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, footerHeight, 0);
    _webView.scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, footerHeight, 0);

    UIView *footer = [UIView new];
    footer.backgroundColor = [UIColor colorWithRed:0.97f green:0.97f blue:0.97f alpha:1.0f];
    UIView *border = [UIView new];
    border.backgroundColor = [UIColor colorWithRed:0.85f green:0.85f blue:0.85f alpha:1.0f];
    UILabel *label = [UILabel new];
    label.text = NSLocalizedStringFromTableInBundle(@"Was this article helpful?", @"UserVoice", [UserVoice bundle], nil);
    label.font = [UIFont systemFontOfSize:13];
    label.textColor = [UIColor colorWithRed:0.41f green:0.42f blue:0.43f alpha:1.0f];
    label.backgroundColor = [UIColor clearColor];
    _footerLabel = label;
    UIButton *yes = [UIButton new];
    [yes setTitle:NSLocalizedStringFromTableInBundle(@"Yes!", @"UserVoice", [UserVoice bundle], nil) forState:UIControlStateNormal];
    [yes setTitleColor:(IOS7 ? yes.tintColor : [UIColor colorWithRed:0.0 green:0.5 blue:1.0 alpha:1.0]) forState:UIControlStateNormal];
    [yes addTarget:self action:@selector(yesButtonTapped) forControlEvents:UIControlEventTouchUpInside];
    _yes = yes;
    UIButton *no = [UIButton new];
    [no setTitle:NSLocalizedStringFromTableInBundle(@"No", @"UserVoice", [UserVoice bundle], nil) forState:UIControlStateNormal];
    [no setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
    [no addTarget:self action:@selector(noButtonTapped) forControlEvents:UIControlEventTouchUpInside];
    _no = no;
    NSArray *constraints = @[
        @"|[border]|", @"|-[label]-(>=10)-[yes]-30-[no]-30-|",
        @"V:|[border(==1)]", @"V:|-15-[label]", (IOS7 ? @"V:|-6-[yes]" : @"V:|-12-[yes]"), (IOS7 ? @"V:|-6-[no]" : @"V:|-12-[no]")
    ];
    [self configureView:footer
               subviews:NSDictionaryOfVariableBindings(border, label, yes, no)
            constraints:constraints];

    [self configureView:self.view
               subviews:NSDictionaryOfVariableBindings(_webView, footer)
            constraints:@[@"V:|[_webView]|", @"V:[footer]|", @"|[_webView]|", @"|[footer]|"]];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:footer attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:footerHeight]];
    [self.view bringSubviewToFront:footer];
}

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
    if (_helpfulPrompt) {
        if (buttonIndex == 0) {
            [self.navigationController popViewControllerAnimated:YES];
        } else if (buttonIndex == 1) {
            [self dismiss];
        }
    } else {
        if (buttonIndex == 0) {
            [self presentModalViewController:[UVContactViewController new]];
        }
    }
}

- (void)yesButtonTapped {
    [UVBabayaga track:VOTE_ARTICLE id:_article.articleId];
    if (_deflectingType) {
        [UVDeflection trackDeflection:@"helpful" deflectingType:_deflectingType deflector:_article];
    }
    if (_helpfulPrompt) {
        // Do you still want to contact us?
        // Yes, go to my message
        UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:_helpfulPrompt
                                                                 delegate:self
                                                        cancelButtonTitle:NSLocalizedStringFromTableInBundle(@"Cancel", @"UserVoice", [UserVoice bundle], nil)
                                                   destructiveButtonTitle:nil
                                                        otherButtonTitles:_returnMessage, NSLocalizedStringFromTableInBundle(@"No, I'm done", @"UserVoice", [UserVoice bundle], nil), nil];
        [actionSheet showInView:self.view];
    } else {
        _yes.hidden = YES;
        _no.hidden = YES;
        _footerLabel.text = NSLocalizedStringFromTableInBundle(@"Great! Glad we could help.", @"UserVoice", [UserVoice bundle], nil);
    }
}

- (void)noButtonTapped {
    if (_deflectingType) {
        [UVDeflection trackDeflection:@"not_helpful" deflectingType:_deflectingType deflector:_article];
    }
    if (_helpfulPrompt) {
        [self.navigationController popViewControllerAnimated:YES];
    } else {
        UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedStringFromTableInBundle(@"Would you like to contact us?", @"UserVoice", [UserVoice bundle], nil)
                                                                 delegate:self
                                                        cancelButtonTitle:NSLocalizedStringFromTableInBundle(@"No", @"UserVoice", [UserVoice bundle], nil)
                                                   destructiveButtonTitle:nil
                                                        otherButtonTitles:NSLocalizedStringFromTableInBundle(@"Yes", @"UserVoice", [UserVoice bundle], nil), nil];
        [actionSheet showInView:self.view];
    }
}

@end


text:
<?php

/**
 * COutputCache enables caching the output generated by an action or a view fragment.
 *
 * If the output to be displayed is found valid in cache, the cached
 * version will be displayed instead, which saves the time for generating
 * the original output.
 *
 * Since COutputCache extends from {@link CFilterWidget}, it can be used
 * as either a filter (for action caching) or a widget (for fragment caching).
 * For the latter, the shortcuts {@link CBaseController::beginCache()} and {@link CBaseController::endCache()}
 * are often used instead, like the following in a view file:
 *

 * if($this->beginCache('cacheName',array('property1'=>'value1',...))
 * {
 *     // ... display the content to be cached here
 *    $this->endCache();
 * }
 *

 *
 * COutputCache must work with a cache application component specified via {@link cacheID}.
 * If the cache application component is not available, COutputCache will be disabled.
 *
 * The validity of the cached content is determined based on two factors:
 * the {@link duration} and the cache {@link dependency}.
 * The former specifies the number of seconds that the data can remain
 * valid in cache (defaults to 60s), while the latter specifies conditions
 * that the cached data depends on. If a dependency changes,
 * (e.g. relevant data in DB are updated), the cached data will be invalidated.
 * For more details about cache dependency, see {@link CCacheDependency}.
 *
 * Sometimes, it is necessary to turn off output caching only for certain request types.
 * For example, we only want to cache a form when it is initially requested;
 * any subsequent display of the form should not be cached because it contains user input.
 * We can set {@link requestTypes} to be array('GET') to accomplish this task.
 *
 * The content fetched from cache may be variated with respect to
 * some parameters. COutputCache supports four kinds of variations:
 *

 *
{@link varyByRoute}: this specifies whether the cached content
 *   should be varied with the requested route (controller and action)

 *
{@link varyByParam}: this specifies a list of GET parameter names
 *   and uses the corresponding values to determine the version of the cached content.

 *
{@link varyBySession}: this specifies whether the cached content
 *   should be varied with the user session.

 *
{@link varyByExpression}: this specifies whether the cached content
 *   should be varied with the result of the specified PHP expression.

 *
{@link varyByLanguage}: this specifies whether the cached content
 *   should by varied with the user's language. Available since 1.1.14.

 *

 * For more advanced variation, override {@link getBaseCacheKey()} method.
 *
 * @property boolean $isContentCached Whether the content can be found from cache.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @package system.web.widgets
 * @since 1.0
 */
class COutputCache extends CFilterWidget
{
	/**
	 * Prefix to the keys for storing cached data
	 */
	const CACHE_KEY_PREFIX='Yii.COutputCache.';

	/**
	 * @var integer number of seconds that the data can remain in cache. Defaults to 60 seconds.
	 * If it is 0, existing cached content would be removed from the cache.
	 * If it is a negative value, the cache will be disabled (any existing cached content will
	 * remain in the cache.)
	 *
	 * Note, if cache dependency changes or cache space is limited,
	 * the data may be purged out of cache earlier.
	 */
	public $duration=60;
	/**
	 * @var boolean whether the content being cached should be differentiated according to route.
	 * A route consists of the requested controller ID and action ID.
	 * Defaults to true.
	 */
	public $varyByRoute=true;
	/**
	 * @var boolean whether the content being cached should be differentiated according to user sessions. Defaults to false.
	 */
	public $varyBySession=false;
	/**
	 * @var array list of GET parameters that should participate in cache key calculation.
	 * By setting this property, the output cache will use different cached data
	 * for each different set of GET parameter values.
	 */
	public $varyByParam;
	/**
	 * @var string a PHP expression whose result is used in the cache key calculation.
	 * By setting this property, the output cache will use different cached data
	 * for each different expression result.
	 * The expression can also be a valid PHP callback,
	 * including class method name (array(ClassName/Object, MethodName)),
	 * or anonymous function (PHP 5.3.0+). The function/method signature should be as follows:
	 *

	 * function foo($cache) { ... }
	 *

	 * where $cache refers to the output cache component.
	 *
	 * The PHP expression will be evaluated using {@link evaluateExpression}.
	 *
	 * A PHP expression can be any PHP code that has a value. To learn more about what an expression is,
	 * please refer to the {@link http://www.php.net/manual/en/language.expressions.php php manual}.
	 */
	public $varyByExpression;
	/**
	 * @var boolean whether the content being cached should be differentiated according to user's language.
	 * A language is retrieved via Yii::app()->language.
	 * Defaults to false.
	 * @since 1.1.14
	 */
	public $varyByLanguage=false;
	/**
	 * @var array list of request types (e.g. GET, POST) for which the cache should be enabled only.
	 * Defaults to null, meaning all request types.
	 */
	public $requestTypes;
	/**
	 * @var string the ID of the cache application component. Defaults to 'cache' (the primary cache application component.)
	 */
	public $cacheID='cache';
	/**
	 * @var mixed the dependency that the cached content depends on.
	 * This can be either an object implementing {@link ICacheDependency} interface or an array
	 * specifying the configuration of the dependency object. For example,
	 *

	 * array(
	 *     'class'=>'CDbCacheDependency',
	 *     'sql'=>'SELECT MAX(lastModified) FROM Post',
	 * )
	 *

	 * would make the output cache depends on the last modified time of all posts.
	 * If any post has its modification time changed, the cached content would be invalidated.
	 */
	public $dependency;

	private $_key;
	private $_cache;
	private $_contentCached;
	private $_content;
	private $_actions;

	/**
	 * Performs filtering before the action is executed.
	 * This method is meant to be overridden by child classes if begin-filtering is needed.
	 * @param CFilterChain $filterChain list of filters being applied to an action
	 * @return boolean whether the filtering process should stop after this filter. Defaults to false.
	 */
	public function filter($filterChain)
	{
		if(!$this->getIsContentCached())
			$filterChain->run();
		$this->run();
	}

	/**
	 * Marks the start of content to be cached.
	 * Content displayed after this method call and before {@link endCache()}
	 * will be captured and saved in cache.
	 * This method does nothing if valid content is already found in cache.
	 */
	public function init()
	{
		if($this->getIsContentCached())
			$this->replayActions();
		elseif($this->_cache!==null)
		{
			$this->getController()->getCachingStack()->push($this);
			ob_start();
			ob_implicit_flush(false);
		}
	}

	/**
	 * Marks the end of content to be cached.
	 * Content displayed before this method call and after {@link init()}
	 * will be captured and saved in cache.
	 * This method does nothing if valid content is already found in cache.
	 */
	public function run()
	{
		if($this->getIsContentCached())
		{
			if($this->getController()->isCachingStackEmpty())
				echo $this->getController()->processDynamicOutput($this->_content);
			else
				echo $this->_content;
		}
		elseif($this->_cache!==null)
		{
			$this->_content=ob_get_clean();
			$this->getController()->getCachingStack()->pop();
			$data=array($this->_content,$this->_actions);
			if(is_array($this->dependency))
				$this->dependency=Yii::createComponent($this->dependency);
			$this->_cache->set($this->getCacheKey(),$data,$this->duration,$this->dependency);

			if($this->getController()->isCachingStackEmpty())
				echo $this->getController()->processDynamicOutput($this->_content);
			else
				echo $this->_content;
		}
	}

	/**
	 * @return boolean whether the content can be found from cache
	 */
	public function getIsContentCached()
	{
		if($this->_contentCached!==null)
			return $this->_contentCached;
		else
			return $this->_contentCached=$this->checkContentCache();
	}

	/**
	 * Looks for content in cache.
	 * @return boolean whether the content is found in cache.
	 */
	protected function checkContentCache()
	{
		if((empty($this->requestTypes) || in_array(Yii::app()->getRequest()->getRequestType(),$this->requestTypes))
			&& ($this->_cache=$this->getCache())!==null)
		{
			if($this->duration>0 && ($data=$this->_cache->get($this->getCacheKey()))!==false)
			{
				$this->_content=$data[0];
				$this->_actions=$data[1];
				return true;
			}
			if($this->duration==0)
				$this->_cache->delete($this->getCacheKey());
			if($this->duration<=0)
				$this->_cache=null;
		}
		return false;
	}

	/**
	 * @return ICache the cache used for caching the content.
	 */
	protected function getCache()
	{
		return Yii::app()->getComponent($this->cacheID);
	}

	/**
	 * Caclulates the base cache key.
	 * The calculated key will be further variated in {@link getCacheKey}.
	 * Derived classes may override this method if more variations are needed.
	 * @return string basic cache key without variations
	 */
	protected function getBaseCacheKey()
	{
		return self::CACHE_KEY_PREFIX.$this->getId().'.';
	}

	/**
	 * Calculates the cache key.
	 * The key is calculated based on {@link getBaseCacheKey} and other factors, including
	 * {@link varyByRoute}, {@link varyByParam}, {@link varyBySession} and {@link varyByLanguage}.
	 * @return string cache key
	 */
	protected function getCacheKey()
	{
		if($this->_key!==null)
			return $this->_key;
		else
		{
			$key=$this->getBaseCacheKey().'.';
			if($this->varyByRoute)
			{
				$controller=$this->getController();
				$key.=$controller->getUniqueId().'/';
				if(($action=$controller->getAction())!==null)
					$key.=$action->getId();
			}
			$key.='.';

			if($this->varyBySession)
				$key.=Yii::app()->getSession()->getSessionID();
			$key.='.';

			if(is_array($this->varyByParam) && isset($this->varyByParam[0]))
			{
				$params=array();
				foreach($this->varyByParam as $name)
				{
					if(isset($_GET[$name]))
						$params[$name]=$_GET[$name];
					else
						$params[$name]='';
				}
				$key.=serialize($params);
			}
			$key.='.';

			if($this->varyByExpression!==null)
				$key.=$this->evaluateExpression($this->varyByExpression);
			$key.='.';

			if($this->varyByLanguage)
				$key.=Yii::app()->language;
			$key.='.';

			return $this->_key=$key;
		}
	}

	/**
	 * Records a method call when this output cache is in effect.
	 * When the content is served from the output cache, the recorded
	 * method will be re-invoked.
	 * @param string $context a property name of the controller. The property should refer to an object
	 * whose method is being recorded. If empty it means the controller itself.
	 * @param string $method the method name
	 * @param array $params parameters passed to the method
	 */
	public function recordAction($context,$method,$params)
	{
		$this->_actions[]=array($context,$method,$params);
	}

	/**
	 * Replays the recorded method calls.
	 */
	protected function replayActions()
	{
		if(empty($this->_actions))
			return;
		$controller=$this->getController();
		$cs=Yii::app()->getClientScript();
		foreach($this->_actions as $action)
		{
			if($action[0]==='clientScript')
				$object=$cs;
			elseif($action[0]==='')
				$object=$controller;
			else
				$object=$controller->{$action[0]};
			if(method_exists($object,$action[1]))
				call_user_func_array(array($object,$action[1]),$action[2]);
			elseif($action[0]==='' && function_exists($action[1]))
				call_user_func_array($action[1],$action[2]);
			else
				throw new CException(Yii::t('yii','Unable to replay the action "{object}.{method}". The method does not exist.',
					array('object'=>$action[0],
						'method'=>$action[1])));
		}
	}
}


text:
package org.beryl.concurrent;

import java.util.concurrent.atomic.AtomicInteger;

/** Reference counter implementation that runs the assigned delegate once the reference goes to 0. */
public class ReferenceCounter {

	final Runnable onZeroCountDelegate;
	final AtomicInteger counter = new AtomicInteger(0);

	public ReferenceCounter(Runnable onZeroCountDelegate) {
		this.onZeroCountDelegate = onZeroCountDelegate;
	}

	/** Increase the counter. */
	public void up() {
		counter.incrementAndGet();
	}

	/** Decrease the counter. */
	public void down() {
		final int count = counter.decrementAndGet();
		if(count <= 0) {
			onZeroCountDelegate.run();
		}
	}
}