<div class="rffwhid-pid-tuning-page">
    <md-sidenav class="md-sidenav-left" md-component-id="pidToolbarSidenavHelp">
        <md-toolbar>
            <h1 class="md-toolbar-tools">Help</h1>
        </md-toolbar>

        <md-content layout-margin>
            <p class="md-title">
                Proportional Integral Derivative(PID)
            </p>
            <p>
                <img src="/app/resources/img/help_sidebar/PID-three-algorithms.jpg" class="img-responsive">
                The three parameters that you can adjust to change the copter’s flight performance.
            </p>
            <p>
                In theory PID is a control loop that attempts to minimize the difference between a measured process value and its desired value by adjusting the control input of a process.
            </p>
            <p class="text-right">
                <md-button ng-click="toggleSidenav('pidToolbarSidenavHelp')" class="md-raised md-primary">
                    {{ "CLOSE" | translate }}
                </md-button>
            </p>
        </md-content>
    </md-sidenav>
    <md-sidenav class="md-sidenav-left" md-component-id="ratesToolbarSidenavHelp">
        <md-toolbar>
            <h1 class="md-toolbar-tools">Help</h1>
        </md-toolbar>

        <md-content layout-margin>
            <p class="md-title">
                RC Rate
            </p>
            <p>
                In a nutshell, RC rate set the speed of rotation for stick travel. Expo adjusts the centre-stick softness against full-stick speed.
            </p>
            <p>
                RC Rate is the multiplier on your Radio Transmitter inputs for all 3-axis: pitch, roll and yaw (one value for all 3 axis).
                If you increase this your quad will respond more aggressively to your stick inputs. This is basically the stick sensitivity setting
            </p>
            <p class="text-right">
                <md-button ng-click="toggleSidenav('ratesToolbarSidenavHelp')" class="md-raised md-primary">
                    {{ "CLOSE" | translate }}
                </md-button>
            </p>
        </md-content>
    </md-sidenav>
    <div flex class="sticky-scroll-wrapper" layout="column">
        <div ng-hide="initialized" layout-align="center center" layout-fill layout="column">
            <span class="md-headline">{{ "PLEASE_WAIT" | translate }}</span>
        </div>
        <form name="pidTuningForm" ng-show="initialized">
            <md-toolbar>
                <div class="md-toolbar-tools">
                    {{ "rffwhid.pid_tuning.PID_TUNING_TOOLBAR_TITLE" | translate }}
                    <md-button class="md-icon-button" aria-label="PID help" ng-click="toggleSidenav('pidToolbarSidenavHelp')">
                        <i class="material-icons">help_outline</i>
                    </md-button>
                </div>
            </md-toolbar>
            <div layout="row">
                <div layout="row">
                    <md-menu>
                        <md-button aria-label="Open filter level menu" ng-click="$mdOpenMenu()" class="md-raised md-primary">
                            {{ "rffwhid.pid_tuning.QUICK_CHANGE_PID_LEVELS_BUTTON" | translate }}
                        </md-button>
                        <md-menu-content width="4" ng-show="userSettings.rffwhidPIDLevels.pidLevels.length > 0">
                            <md-menu-item ng-repeat="pidLevel in userSettings.rffwhidPIDLevels.pidLevels">
                                <md-button ng-click="changePidLevel(pidLevel.name);">
                                    {{ pidLevel.display_name }}
                                </md-button>
                            </md-menu-item>
                        </md-menu-content>
                    </md-menu>
                </div>
                <div layout="row">
                    <md-button ng-click="toggleTPABlock()" class="md-primary">
                        <span ng-hide="tpa_block_show">{{ "rffwhid.pid_tuning.SHOW_TPA_BLOCK" | translate }}</span>
                        <span ng-show="tpa_block_show">{{ "rffwhid.pid_tuning.HIDE_TPA_BLOCK" | translate }}</span>
                    </md-button>
                </div>
                <div layout="row">
                    <md-switch ng-model="pids_in_percent" aria-label="Show pids in percents">
                        {{ "rffwhid.pid_tuning.SHOW_IN_PERCENTS" | translate }}
                    </md-switch>
                </div>
            </div>

            <div ng-show="pids_in_percent">
                <div layout="row" layout-padding>
                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.ROLL_PROPORTIONAL_LABEL" | translate }}
                                <span ng-show="RFDump.set['roll_kp'+currentPIDTuningProfile] != currentRFDump.set['roll_kp'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_kp'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['roll_kp'+currentPIDTuningProfile]" name="roll_kp" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">

                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['roll_kp'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.roll_kp.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['roll_kp'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="roll_kp">
                            </md-slider>
                        </md-slider-container>
                    </div>
                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.ROLL_INTEGRAL_LABEL" | translate }}
                                <span ng-show="RFDump.set['roll_ki'+currentPIDTuningProfile] != currentRFDump.set['roll_ki'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_ki'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['roll_ki'+currentPIDTuningProfile]" name="roll_ki" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['roll_ki'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.roll_ki.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['roll_ki'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="roll_ki">
                            </md-slider>
                        </md-slider-container>
                    </div>
                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.ROLL_DERIVATIVE_LABEL" | translate }}
                                <span ng-show="RFDump.set['roll_kd'+currentPIDTuningProfile] != currentRFDump.set['roll_kd'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_kd'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['roll_kd'+currentPIDTuningProfile]" name="roll_kd" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['roll_kd'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.roll_kd.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['roll_kd'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="roll_kd">
                            </md-slider>
                        </md-slider-container>
                    </div>
                </div>

                <div layout="row" layout-padding>
                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.PITCH_PROPORTIONAL_LABEL" | translate }}
                                <span ng-show="RFDump.set['pitch_kp'+currentPIDTuningProfile] != currentRFDump.set['pitch_kp'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_kp'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['pitch_kp'+currentPIDTuningProfile]" name="pitch_kp" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['pitch_kp'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.pitch_kp.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['pitch_kp'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="pitch_kp">
                            </md-slider>
                        </md-slider-container>
                    </div>

                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.PITCH_INTEGRAL_LABEL" | translate }}
                                <span ng-show="RFDump.set['pitch_ki'+currentPIDTuningProfile] != currentRFDump.set['pitch_ki'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_ki'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['pitch_ki'+currentPIDTuningProfile]" name="pitch_ki" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['pitch_ki'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.pitch_ki.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['pitch_ki'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="pitch_ki">
                            </md-slider>
                        </md-slider-container>
                    </div>
                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.PITCH_DERIVATIVE_LABEL" | translate }}
                                <span ng-show="RFDump.set['pitch_kd'+currentPIDTuningProfile] != currentRFDump.set['pitch_kd'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_kd'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['pitch_kd'+currentPIDTuningProfile]" name="pitch_kd" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['pitch_kd'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.pitch_kd.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['pitch_kd'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="pitch_kd">
                            </md-slider>
                        </md-slider-container>
                    </div>
                </div>

                <div layout="row" layout-padding>
                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.YAW_PROPORTIONAL_LABEL" | translate }}
                                <span ng-show="RFDump.set['yaw_kp'+currentPIDTuningProfile] != currentRFDump.set['yaw_kp'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_kp'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['yaw_kp'+currentPIDTuningProfile]" name="yaw_kp" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['yaw_kp'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.yaw_kp.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['yaw_kp'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="yaw_kp">
                            </md-slider>
                        </md-slider-container>
                    </div>

                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.YAW_INTEGRAL_LABEL" | translate }}
                                <span ng-show="RFDump.set['yaw_ki'+currentPIDTuningProfile] != currentRFDump.set['yaw_ki'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_ki'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['yaw_ki'+currentPIDTuningProfile]" name="yaw_ki" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['yaw_ki'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.yaw_ki.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['yaw_ki'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="yaw_ki">
                            </md-slider>
                        </md-slider-container>
                    </div>

                    <div layout="column" flex>
                        <md-input-container class="md-icon-right">
                            <label>
                                {{ "rffwhid.pid_tuning.YAW_DERIVATIVE_LABEL" | translate }}
                                <span ng-show="RFDump.set['yaw_kd'+currentPIDTuningProfile] != currentRFDump.set['yaw_kd'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_kd'+currentPIDTuningProfile] }})</span>
                            </label>
                            <input type="text" ng-model="RFDump.set['yaw_kd'+currentPIDTuningProfile]" name="yaw_kd" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="200" number-input-formatter ng-required="true">
                            <div class="right-sign">
                                <div layout="row">
                                    <ng-spinner ng-model="RFDump.set['yaw_kd'+currentPIDTuningProfile]" ng-min="0" ng-max="200"></ng-spinner>
                                    <div class="percent">%</div>
                                </div>
                            </div>
                            <div ng-messages="pidTuningForm.yaw_kd.$error">
                                <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                                <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0%", to: "200%"}' }}</div>
                                <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                            </div>
                        </md-input-container>
                        <md-slider-container>
                            <md-slider flex ng-model="RFDump.set['yaw_kd'+currentPIDTuningProfile]" ng-min="0" ng-max="100" step="1" aria-label="yaw_kd">
                            </md-slider>
                        </md-slider-container>
                    </div>
                </div>
            </div>

            <div ng-show="pids_in_percent == false">
                <div layout="row" layout-padding>
                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.ROLL_PROPORTIONAL_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.roll_kp|number:2" name="roll_kp_value" ng-disabled="true">
                        </md-input-container>
                    </div>
                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.ROLL_INTEGRAL_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.roll_ki|number:2" name="roll_ki_value" ng-disabled="true">
                        </md-input-container>
                    </div>
                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.ROLL_DERIVATIVE_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.roll_kd|number:2" name="roll_kd_value" ng-disabled="true">
                        </md-input-container>
                    </div>
                </div>

                <div layout="row" layout-padding>
                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.PITCH_PROPORTIONAL_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.pitch_kp|number:2" name="pitch_kp_value" ng-disabled="true">
                        </md-input-container>
                    </div>

                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.PITCH_INTEGRAL_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.pitch_ki|number:2" name="pitch_ki_value" ng-disabled="true">
                        </md-input-container>
                    </div>
                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.PITCH_DERIVATIVE_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.pitch_kd|number:2" name="pitch_kd_value" ng-disabled="true">
                        </md-input-container>
                    </div>
                </div>

                <div layout="row" layout-padding>
                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.YAW_PROPORTIONAL_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.yaw_kp|number:2" name="yaw_kp_value" ng-disabled="true">
                        </md-input-container>
                    </div>

                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.YAW_INTEGRAL_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.yaw_ki|number:2" name="yaw_ki_value" ng-disabled="true">
                        </md-input-container>
                    </div>

                    <div layout="column" flex>
                        <md-input-container>
                            <label>{{ "rffwhid.pid_tuning.YAW_DERIVATIVE_LABEL" | translate }}</label>
                            <input type="text" ng-value="pidValues.yaw_kd|number:2" name="yaw_kd_value" ng-disabled="true">
                        </md-input-container>
                    </div>
                </div>
            </div>

            <div layout="row" layout-padding>
                <div layout="column" flex>
                    <md-input-container>
                        <label>{{ "rffwhid.pid_tuning.RC_SMOOTHING" | translate }}</label>
                        <input flex type="text" ng-model="rc_smoothing_percentage" aria-label="RC smoothing" aria-controls="rc_smoothing-slider" name="rc_smoothing" ng-min="1" ng-max="100" ng-pattern="/^([+-]?[1-9]\d*|0)$/" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="rc_smoothing_percentage" ng-min="1" ng-max="100"></ng-spinner>
                                <div class="percent">%</div>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.rc_smoothing.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "1%", to: "100%"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "1%", to: "100%"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                    <md-slider-container>
                        <md-slider flex ng-model="rc_smoothing_percentage" ng-min="1" ng-max="100" step="1" aria-label="rc_smoothing">
                        </md-slider>
                    </md-slider-container>
                </div>
                <div layout="column" flex>
                    <md-switch ng-model="RFDump.set['res_redux'+currentPIDTuningProfile]" ng-true-value="1" ng-false-value="0" aria-label="ESC Signal Smoothing">
                        {{ "rffwhid.pid_tuning.RES_REDUX_LABEL" | translate }}
                    </md-switch>
                </div>
                <div layout="row" flex>

                </div>
            </div>

            <div layout="row" layout-padding>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.FAMX_LABEL" | translate }}
                            <span ng-show="RFDump.set['famx'] != currentRFDump.set['famx']">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['famx'] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['famx']" name="famx" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="1.1" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['famx']" ng-min="0" ng-max="1.1" step="0.1"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.famx.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.KD_LIMIT_LABEL" | translate }}
                            <span ng-show="RFDump.set['kd_limit'+currentPIDTuningProfile] != currentRFDump.set['kd_limit'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['kd_limit'+currentPIDTuningProfile] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['kd_limit'+currentPIDTuningProfile]" name="kd_limit" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="1" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['kd_limit'+currentPIDTuningProfile]" ng-min="0" ng-max="1" step="0.1"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.kd_limit.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.KI_LIMIT_LABEL" | translate }}
                            <span ng-show="RFDump.set['ki_limit'+currentPIDTuningProfile] != currentRFDump.set['ki_limit'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['ki_limit'+currentPIDTuningProfile] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['ki_limit'+currentPIDTuningProfile]" name="ki_limit" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="1" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['ki_limit'+currentPIDTuningProfile]" ng-min="0" ng-max="1" step="0.1"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.ki_limit.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
            </div>

            <div layout="row" layout-padding>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.ROLL_KD_RAP_LABEL" | translate }}
                            <span ng-show="RFDump.set['roll_kd_rap'+currentPIDTuningProfile] != currentRFDump.set['roll_kd_rap'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_kd_rap'+currentPIDTuningProfile] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['roll_kd_rap'+currentPIDTuningProfile]" name="roll_kd_rap" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="100" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['roll_kd_rap'+currentPIDTuningProfile]" ng-min="0" ng-max="100"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.roll_kd_rap.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.PITCH_KD_RAP_LABEL" | translate }}
                            <span ng-show="RFDump.set['pitch_kd_rap'+currentPIDTuningProfile] != currentRFDump.set['pitch_kd_rap'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_kd_rap'+currentPIDTuningProfile] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['pitch_kd_rap'+currentPIDTuningProfile]" name="pitch_kd_rap" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="100" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['pitch_kd_rap'+currentPIDTuningProfile]" ng-min="0" ng-max="100"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.pitch_kd_rap.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.YAW_KD_RAP_LABEL" | translate }}
                            <span ng-show="RFDump.set['yaw_kd_rap'+currentPIDTuningProfile] != currentRFDump.set['yaw_kd_rap'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_kd_rap'+currentPIDTuningProfile] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['yaw_kd_rap'+currentPIDTuningProfile]" name="yaw_kd_rap" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="100" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['yaw_kd_rap'+currentPIDTuningProfile]" ng-min="0" ng-max="100"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.yaw_kd_rap.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
            </div>


            <div layout="row" layout-padding>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.ROLL_DEADBAND_LABEL" | translate }}
                            <span ng-show="RFDump.set['roll_deadband'] != currentRFDump.set['roll_deadband']">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_deadband'] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['roll_deadband']" name="roll_deadband" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="0.1" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['roll_deadband']" ng-min="0" ng-max="0.1" step="0.01"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.roll_deadband.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "0.1"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "0.1"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.PITCH_DEADBAND_LABEL" | translate }}
                            <span ng-show="RFDump.set['pitch_deadband'] != currentRFDump.set['pitch_deadband']">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_deadband'] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['pitch_deadband']" name="pitch_deadband" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="0.1" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['pitch_deadband']" ng-min="0" ng-max="0.1" step="0.01"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.pitch_deadband.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "0.1"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "0.1"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
                <div layout="column" flex>
                    <md-input-container>
                        <label>
                            {{ "rffwhid.pid_tuning.YAW_DEADBAND_LABEL" | translate }}
                            <span ng-show="RFDump.set['yaw_deadband'] != currentRFDump.set['yaw_deadband']">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_deadband'] }})</span>
                        </label>
                        <input type="text" ng-model="RFDump.set['yaw_deadband']" name="yaw_deadband" ng-pattern="/^[0-9]\d*(\.\d+)?$/" ng-min="0" ng-max="0.1" number-input-formatter ng-required="true">
                        <div class="right-sign">
                            <div layout="row">
                                <ng-spinner ng-model="RFDump.set['yaw_deadband']" ng-min="0" ng-max="0.1" step="0.01"></ng-spinner>
                            </div>
                        </div>
                        <div ng-messages="pidTuningForm.yaw_deadband.$error">
                            <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                            <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "0.1"}' }}</div>
                            <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "0.1"}' }}</div>
                            <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                        </div>
                    </md-input-container>
                </div>
            </div>

            <div layout="column" flex ng-show="tpa_block_show == true" id="TPABlock">
                <div layout="row" flex>
                    <div layout="column" flex>
                        <div class="row" flex>
                            <p class="tpa-label" flex>{{ "rffwhid.pid_tuning.TPA_KP_TITLE_LABEL" | translate }}</p>
                        </div>
                        <div layout="row" flex>
                            <canvas class="chart chart-line" chart-data="tpakpGraphData" chart-labels="tpakpGraphLabels" chart-options="tpakpGraphOptions" chart-dataset-override="tpakpGraphDatasetOverride">
                            </canvas>
                        </div>
                        <div layout="row" layout-align="end center">
                            <span flex></span>
                            <div layout="row" ng-repeat="n in RFDump['tpakp'+currentPIDTuningProfile] track by $index" flex>
                                <md-slider-container>
                                    <md-slider ng-model="RFDump['tpakp'+currentPIDTuningProfile][$index]" ng-min="1" ng-max="200" aria-label="{{ 'tpakp_'+currentPIDTuningProfile+'_'+$index }}-slider" class="tpa-vertical-slider" md-vertical md-range></md-slider>
                                    <span>{{ RFDump['tpakp'+currentPIDTuningProfile][$index]}}</span>
                                </md-slider-container>
                            </div>
                        </div>
                    </div>
                    <div layout="column" flex>
                        <div class="row" flex>
                            <p class="tpa-label" flex>{{ "rffwhid.pid_tuning.TPA_KI_TITLE_LABEL" | translate }}</p>
                        </div>
                        <div class="row" flex>
                            <canvas class="chart chart-line" chart-data="tpakiGraphData" chart-labels="tpakiGraphLabels" chart-options="tpakiGraphOptions" chart-dataset-override="tpakiGraphDatasetOverride">
                            </canvas>
                        </div>
                        <div layout="row" layout-align="end center">
                            <span flex></span>
                            <div layout="row" ng-repeat="n in RFDump['tpaki'+currentPIDTuningProfile] track by $index" flex>
                                <md-slider-container>
                                    <md-slider ng-model="RFDump['tpaki'+currentPIDTuningProfile][$index]" ng-min="1" ng-max="200" aria-label="{{ 'tpaki_'+currentPIDTuningProfile+'_'+$index }}-slider" class="tpa-vertical-slider" md-vertical md-range></md-slider>
                                    <span>{{ RFDump['tpaki'+currentPIDTuningProfile][$index]}}</span>
                                </md-slider-container>
                            </div>
                        </div>
                    </div>
                    <div layout="column" flex>
                        <div class="row" flex>
                            <p class="tpa-label" flex>{{ "rffwhid.pid_tuning.TPA_KD_TITLE_LABEL" | translate }}</p>
                        </div>

                        <div class="row" flex>
                            <canvas class="chart chart-line" chart-data="tpakdGraphData" chart-labels="tpakdGraphLabels" chart-options="tpakdGraphOptions" chart-dataset-override="tpakdGraphDatasetOverride">
                            </canvas>
                        </div>
                        <div layout="row" layout-align="end center">
                            <span flex></span>
                            <div layout="row" ng-repeat="n in RFDump['tpakd'+currentPIDTuningProfile] track by $index" flex>
                                <md-slider-container>
                                    <md-slider ng-model="RFDump['tpakd'+currentPIDTuningProfile][$index]" ng-min="1" ng-max="200" aria-label="{{ 'tpakd_'+currentPIDTuningProfile+'_'+$index }}-slider" class="tpa-vertical-slider" md-vertical md-range></md-slider>
                                    <span>{{ RFDump['tpakd'+currentPIDTuningProfile][$index]}}</span>
                                </md-slider-container>
                            </div>
                        </div>
                    </div>
                </div>


                <div layout="row" flex layout-padding>
                    <div layout="column" flex>
                        <md-switch ng-model="RFDump.set['tpa_kp_curve_type'+currentPIDTuningProfile]" ng-true-value="1" ng-false-value="0" aria-label="tpa_kp_curve_type">
                            {{ "rffwhid.pid_tuning.TPA_KP_CURVE_TYPE_LABEL" | translate }}
                        </md-switch>
                    </div>
                    <div layout="column" flex>
                        <md-switch ng-model="RFDump.set['tpa_ki_curve_type'+currentPIDTuningProfile]" ng-true-value="1" ng-false-value="0" aria-label="tpa_ki_curve_type">
                            {{ "rffwhid.pid_tuning.TPA_KI_CURVE_TYPE_LABEL" | translate }}
                        </md-switch>
                    </div>
                    <div layout="column" flex>
                        <md-switch ng-model="RFDump.set['tpa_kd_curve_type'+currentPIDTuningProfile]" ng-true-value="1" ng-false-value="0" aria-label="tpa_kd_curve_type">
                            {{ "rffwhid.pid_tuning.TPA_KD_CURVE_TYPE_LABEL" | translate }}
                        </md-switch>
                    </div>
                </div>


            </div>

            <md-toolbar>
                <div class="md-toolbar-tools">
                    {{ "rffwhid.pid_tuning.RATES_TOOLBAR_TITLE" | translate }}
                    <md-button class="md-icon-button" aria-label="Rates help" ng-click="toggleSidenav('ratesToolbarSidenavHelp')">
                        <i class="material-icons">help_outline</i>
                    </md-button>
                </div>
            </md-toolbar>

            <div layout="row" layout-padding>
                <md-select placeholder="Rates" ng-model="RFDump.set['stick_curve'+currentPIDTuningProfile]" class="rates-select" ng-change="changeRates()">
                    <md-option ng-repeat="stickCurveRate in userSettings.rffwhidStickCurveRates.stickCurveRates" ng-value="stickCurveRate.name">
                        {{ stickCurveRate.display_name }}
                    </md-option>
                </md-select>

                <md-menu ng-show="RFDump.set['stick_curve'+currentPIDTuningProfile] == 4">
                    <md-button aria-label="Open quick change rates menu" ng-click="$mdOpenMenu()" class="md-raised md-primary">
                        {{ "rffwhid.pid_tuning.QUICK_CHANGE_RATES_BUTTON" | translate }}
                    </md-button>
                    <md-menu-content width="4" ng-show="userSettings.rffwhidRateLevels.rateLevels.length > 0">
                        <md-menu-item ng-repeat="rffwhidRateLevel in userSettings.rffwhidRateLevels.rateLevels">
                            <md-button ng-click="changeRateLevel(rffwhidRateLevel.name);">
                                {{ rffwhidRateLevel.display_name }}
                            </md-button>
                        </md-menu-item>
                    </md-menu-content>
                </md-menu>

            </div>

            <div layout="row" layout-padding>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.roll_rate | translate }}
                        <span ng-show="RFDump.set['roll_rate'+currentPIDTuningProfile] != currentRFDump.set['roll_rate'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_rate'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['roll_rate'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="roll_rate" ng-min="0" ng-max="1500" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['roll_rate'+currentPIDTuningProfile]" ng-min="0" ng-max="1500" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.roll_rate.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1500"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1500"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.roll_expo | translate }}
                        <span ng-show="RFDump.set['roll_expo'+currentPIDTuningProfile] != currentRFDump.set['roll_expo'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_expo'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['roll_expo'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="roll_expo" ng-min="0" ng-max="100" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['roll_expo'+currentPIDTuningProfile]" ng-min="0" ng-max="100" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.roll_expo.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex="">
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.roll_acrop | translate }}
                        <span ng-show="RFDump.set['roll_acrop'+currentPIDTuningProfile] != currentRFDump.set['roll_acrop'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_acrop'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['roll_acrop'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="roll_acrop" ng-min="0" ng-max="300" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['roll_acrop'+currentPIDTuningProfile]" ng-min="0" ng-max="300" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.roll_acrop.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "300"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "300"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
            </div>

            <div layout="row" layout-padding>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.pitch_rate | translate }}
                        <span ng-show="RFDump.set['pitch_rate'+currentPIDTuningProfile] != currentRFDump.set['pitch_rate'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_rate'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['pitch_rate'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="pitch_rate" ng-min="0" ng-max="1500" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['pitch_rate'+currentPIDTuningProfile]" ng-min="0" ng-max="1500" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.pitch_rate.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1500"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1500"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.pitch_expo | translate }}
                        <span ng-show="RFDump.set['pitch_expo'+currentPIDTuningProfile] != currentRFDump.set['pitch_expo'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_expo'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['pitch_expo'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="pitch_expo" ng-min="0" ng-max="100" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['pitch_expo'+currentPIDTuningProfile]" ng-min="0" ng-max="100" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.pitch_expo.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.pitch_acrop | translate }}
                        <span ng-show="RFDump.set['pitch_acrop'+currentPIDTuningProfile] != currentRFDump.set['pitch_acrop'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_acrop'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['pitch_acrop'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="pitch_acrop" ng-min="0" ng-max="300" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['pitch_acrop'+currentPIDTuningProfile]" ng-min="0" ng-max="300" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.pitch_acrop.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "300"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "300"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
            </div>

            <div layout="row" layout-padding>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.yaw_rate | translate }}
                        <span ng-show="RFDump.set['yaw_rate'+currentPIDTuningProfile] != currentRFDump.set['yaw_rate'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_rate'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['yaw_rate'+currentPIDTuningProfile]" ng-change="updateRateData()" name="yaw_rate" ng-min="0" ng-max="1500" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['yaw_rate'+currentPIDTuningProfile]" ng-min="0" ng-max="1500" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.yaw_rate.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1500"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "1500"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.yaw_expo | translate }}
                        <span ng-show="RFDump.set['yaw_expo'+currentPIDTuningProfile] != currentRFDump.set['yaw_expo'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_expo'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['yaw_expo'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="yaw_expo" ng-min="0" ng-max="100" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['yaw_expo'+currentPIDTuningProfile]" ng-min="0" ng-max="100" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.yaw_expo.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ rate_names[RFDump.set['stick_curve'+currentPIDTuningProfile]].options.yaw_acrop | translate }}
                        <span ng-show="RFDump.set['yaw_acrop'+currentPIDTuningProfile] != currentRFDump.set['yaw_acrop'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_acrop'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['yaw_acrop'+currentPIDTuningProfile]" ng-change="initialized && updateRateData()" name="yaw_acrop" ng-min="0" ng-max="300" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['yaw_acrop'+currentPIDTuningProfile]" ng-min="0" ng-max="300" ng-change="initialized && updateRateData()"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.yaw_acrop.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "300"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "300"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
            </div>

            <div layout="row" flex>
                <div class="column" flex="80" flex-md="70">
                    <div class="row" flex>
                        <canvas class="chart chart-line" chart-data="rateGraphData" chart-labels="rateGraphLabels" chart-options="rateGraphOptions" chart-dataset-override="rateGraphDatasetOverride">
                        </canvas>
                    </div>
                </div>
                <div class="row" flex="20" flex-md="30">
                    <div layout="row" layout-padding>
                        <div>{{ "ROLL" | translate }}: {{ roll_rateDps }} {{ "rffwhid.pid_tuning.DEGREES_PER_SECOND_CHART_LABEL" | translate }}, {{ roll_rateRotations }} {{ "rffwhid.pid_tuning.ROTATIONS_PER_SECOND_CHART_LABEL" | translate }}</div>
                    </div>
                    <div layout="row" layout-padding>
                        <div>{{ "PITCH" | translate }}: {{ pitch_rateDps }} {{ "rffwhid.pid_tuning.DEGREES_PER_SECOND_CHART_LABEL" | translate }}, {{ pitch_rateRotations }} {{ "rffwhid.pid_tuning.ROTATIONS_PER_SECOND_CHART_LABEL" | translate }}</div>
                    </div>
                    <div layout="row" layout-padding>
                        <div>{{ "YAW" | translate }}: {{ yaw_rateDps }} {{ "rffwhid.pid_tuning.DEGREES_PER_SECOND_CHART_LABEL" | translate }}, {{ yaw_rateRotations }} {{ "rffwhid.pid_tuning.ROTATIONS_PER_SECOND_CHART_LABEL" | translate }}</div>
                    </div>
                </div>
            </div>

            <md-toolbar>
                <div class="md-toolbar-tools">
                    {{ "rffwhid.pid_tuning.FILTERING_TOOLBAR_TITLE" | translate }}
                </div>
            </md-toolbar>

            <div layout="row">
                <md-menu>
                    <md-button aria-label="Open filter level menu" ng-click="$mdOpenMenu()" class="md-raised md-primary">
                        {{ "rffwhid.pid_tuning.QUICK_CHANGE_FILTER_LEVELS_BUTTON" | translate }}
                    </md-button>
                    <md-menu-content width="4" ng-show="userSettings.rffwhidFilterLevels.filterLevels.length > 0">
                        <md-menu-item ng-repeat="filterLevel in userSettings.rffwhidFilterLevels.filterLevels">
                            <md-button ng-click="changeFilterLevel(filterLevel.name);">
                                {{ filterLevel.display_name }}
                            </md-button>
                        </md-menu-item>
                    </md-menu-content>
                </md-menu>
            </div>

            <div layout="row" layout-padding>
                <md-input-container flex>
                    <label>
                        {{ "rffwhid.pid_tuning.ROLL_GYRO_AVERAGING_LABEL" | translate }}
                        <span ng-show="RFDump.set['roll_ga'+currentPIDTuningProfile] != currentRFDump.set['roll_ga'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_ga'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['roll_ga'+currentPIDTuningProfile]" name="roll_ga" ng-min="0" ng-max="31" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['roll_ga'+currentPIDTuningProfile]" ng-min="0" ng-max="31"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.roll_ga.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "31"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "31"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ "rffwhid.pid_tuning.ROLL_FILTER_LEVEL_LABEL" | translate }}
                        <span ng-show="RFDump.set['roll_quick'+currentPIDTuningProfile] != currentRFDump.set['roll_quick'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['roll_quick'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['roll_quick'+currentPIDTuningProfile]" name="roll_quick" ng-min="0" ng-max="100" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['roll_quick'+currentPIDTuningProfile]" ng-min="0" ng-max="100"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.roll_quick.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
            </div>

            <div layout="row" layout-padding>
                <md-input-container flex>
                    <label>
                        {{ "rffwhid.pid_tuning.PITCH_GYRO_AVERAGING_LABEL" | translate }}
                        <span ng-show="RFDump.set['pitch_ga'+currentPIDTuningProfile] != currentRFDump.set['pitch_ga'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_ga'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['pitch_ga'+currentPIDTuningProfile]" name="pitch_ga" ng-min="0" ng-max="31" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['pitch_ga'+currentPIDTuningProfile]" ng-min="0" ng-max="31"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.pitch_ga.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "31"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "31"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ "rffwhid.pid_tuning.PITCH_FILTER_LEVEL_LABEL" | translate }}
                        <span ng-show="RFDump.set['pitch_quick'+currentPIDTuningProfile] != currentRFDump.set['pitch_quick'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['pitch_quick'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['pitch_quick'+currentPIDTuningProfile]" name="pitch_quick" ng-min="0" ng-max="100" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['pitch_quick'+currentPIDTuningProfile]" ng-min="0" ng-max="100"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.pitch_ga.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
            </div>

            <div layout="row" layout-padding>
                <md-input-container flex>
                    <label>
                        {{ "rffwhid.pid_tuning.YAW_GYRO_AVERAGING_LABEL" | translate }}
                        <span ng-show="RFDump.set['yaw_ga'+currentPIDTuningProfile] != currentRFDump.set['yaw_ga'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_ga'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['yaw_ga'+currentPIDTuningProfile]" name="yaw_ga" ng-min="0" ng-max="31" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['yaw_ga'+currentPIDTuningProfile]" ng-min="0" ng-max="31"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.yaw_ga.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "31"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "31"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
                <md-input-container flex>
                    <label>
                        {{ "rffwhid.pid_tuning.YAW_FILTER_LEVEL_LABEL" | translate }}
                        <span ng-show="RFDump.set['yaw_quick'+currentPIDTuningProfile] != currentRFDump.set['yaw_quick'+currentPIDTuningProfile]">({{ "CURRENT_VALUE" | translate }}: {{ currentRFDump.set['yaw_quick'+currentPIDTuningProfile] }})</span>
                    </label>
                    <input type="text" ng-model="RFDump.set['yaw_quick'+currentPIDTuningProfile]" name="yaw_quick" ng-min="0" ng-max="100" ng-pattern="/^[0-9]\d*(\.\d+)?$/" number-input-formatter ng-required="true">
                    <div class="right-sign">
                        <div layout="row">
                            <ng-spinner ng-model="RFDump.set['yaw_quick'+currentPIDTuningProfile]" ng-min="0" ng-max="100"></ng-spinner>
                        </div>
                    </div>
                    <div ng-messages="pidTuningForm.yaw_quick.$error">
                        <div ng-message="required" class="error-message">{{ "THIS_FIELD_IS_REQUIRED" | translate }}</div>
                        <div ng-message="min" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="max" class="error-message">{{ "VALUE_SHOULD_BE_IN_RANGE_FROM" | translate:'{from: "0", to: "100"}' }}</div>
                        <div ng-message="pattern" class="error-message">{{ "INCORRECT_VALUE" | translate }}</div>
                    </div>
                </md-input-container>
            </div>

        </form>
    </div>


    <div class="sticky-footer" flex>
        <md-toolbar class="sticky-toolbar">
            <div class="md-toolbar-tools">
                <md-select placeholder="" aria-label="Profiles select" ng-model="profileSelect" class="profiles-select" ng-change="profileChanged()" ng-show="pidTuningProfiles.length>0">
                    <md-option ng-repeat="profile in pidTuningProfiles track by $index" ng-value="profile.value">{{ profile.name }}</md-option>
                </md-select>
                <md-button class="md-icon-button" ng-click="editCurrentProfile($event);" ng-show="currentPIDTuningProfile && pidTuningProfiles.length>0">
                    <md-tooltip md-direction="top">{{ "rffwhid.pid_tuning.CHANGE_PROFILE_TOOLTIP" | translate }}</md-tooltip>
                    <i class="material-icons">mode_edit</i>
                </md-button>
                <md-button class="md-icon-button"ng-click="copyCurrentProfile();" ng-show="currentPIDTuningProfile && pidTuningProfiles.length>0">
                    <md-tooltip md-direction="top">{{ "rffwhid.pid_tuning.COPY_PROFILE_TOOLTIP" | translate }}</md-tooltip>
                    <i class="material-icons">content_copy</i>
                </md-button>
                <span flex></span>
                <md-button class="md-raised" aria-label="Save" ng-click="save()">
                    {{ "SAVE" | translate }}
                </md-button>
            </div>
        </md-toolbar>
    </div>
</div>