--------------------------------------------------------------------------- ★ parseFileData() ファイルの内容からサイズなどを求める ---------------------------------------------------------------------------
513294
function(){
		var lines = this.qdata.split("\n"), col = 0, row = 0;
		delete this.qdata;
		
		/* サイズを表す文字列 */
		if(this.type===FILE_PBOX_XML){
			row = +this.body.querySelector('size').getAttribute('row');
			col = +this.body.querySelector('size').getAttribute('col');
			if(this.pid==="slither"||this.pid==='kakuro'){ row--; col--;}
		}
		else if(this.type===FILE_PBOX && this.pid==="kakuro"){
			row = +lines.shift() - 1;
			col = +lines.shift() - 1;
		}
		else if(this.pid==="sudoku"){
			row = col = +lines.shift();
		}
		else{
			row = +lines.shift();
			col = +lines.shift();
		}
		if(row<=0 || col<=0){ return false;}
		this.rows = row;
		this.cols = col;
		
		/* サイズ以降のデータを取得 */
		if(this.type===FILE_PZPR){
			var historypos = null, str = "", strs = [], isinfo = false;
			for(var i=0;i<lines.length;i++){
				/* かなり昔のぱずぷれファイルは最終行にURLがあったので、末尾扱いする */
				if(lines[i].match(/^http\:\/\//)){ break;}
				
				/* info行に到達した場合 */
				if(lines[i].match(/info:\{/)){ historypos=i; isinfo = true; break;}
				
				/* 履歴行に到達した場合 */
				if(lines[i].match(/history:\{|__HISTORY__/)){ historypos=i; break;}
				
				strs.push(lines[i]);
			}
			this.body += strs.join('\n');
			
			/* 履歴部分の読み込み */
			if(historypos!==null && !!JSON){
				var count = 0, cnt;
				for(var i=historypos;i<lines.length;i++){
					str += lines[i];
					
					cnt = count;
					count += (lines[i].match(/\{/g)||[]).length;
					count -= (lines[i].match(/\}/g)||[]).length;
					if(cnt>0 && count===0){ break;}
				}
			}
			
			/* 履歴出力があったら入力する */
			if(!!JSON){
				if(isinfo && (str.substr(0,5)==="info:")){
					var info = JSON.parse(str.substr(5));
					this.metadata.update(info.metadata);
					this.history = info.history || '';
				}
				else if(str.substr(0,8)==="history:"){
					this.history = JSON.parse(str.substr(8));
				}
			}
		}
		else if(this.type===FILE_PBOX){
			this.body = lines.join("\n");
		}
		else if(this.type===FILE_PBOX_XML){
			if(!!this.body){
				var metanode = this.body.querySelector('property'), meta = this.metadata;
				meta.author = metanode.querySelector('author').getAttribute('value');
				meta.source = metanode.querySelector('source').getAttribute('value');
				meta.hard   = metanode.querySelector('difficulty').getAttribute('value');
				var commentnode = metanode.querySelector('comment');
				meta.comment= (!!commentnode ? commentnode.childNodes[0].data : '');
			}
		}
		
		return true;
	}
825797
function curveRegisterInfoUpdate(){
    //レジスタ値の取得 複数取得は返り値がObject
    KMB.cmdReadRegister([KMMotorOneWebBLE.cmdReadRegister_COMMAND.curveType,KMMotorOneWebBLE.cmdReadRegister_COMMAND.acc,KMMotorOneWebBLE.cmdReadRegister_COMMAND.dec]).then(function(val){
        let str="";
        Object.keys(val).forEach(function(k){str+=k+":"+val[k]+" "});
        $("#curveRegisterInfo").text(str);
    }).catch(function(msg){
        console.log(msg);
    });
}
1143361
private function make_list_by_dir_scan( $path = null ){

		$realpath = $this->px->fs()->get_realpath('./'.$path);

		if( !file_exists( $realpath ) ){
			// 直にファイルが存在しない場合、2重拡張子のファイルを検索
			$tmp_process = array_keys( get_object_vars( $this->px->conf()->funcs->processor ) );
			foreach( $tmp_process as $tmp_ext ){
				if( $this->px->fs()->is_file( $realpath.'.'.$tmp_ext ) ){
					$realpath = $realpath.'.'.$tmp_ext;
					break;
				}
			}
			unset($tmp_process, $tmp_ext);
		}

		if( $this->px->fs()->is_file( $realpath ) ){
			$tmp_localpath = $this->px->fs()->get_realpath('/'.$path);
			if( preg_match( '/\.'.$this->preg_exts.'\.'.$this->preg_exts.'$/is', $tmp_localpath ) ){
				$tmp_localpath = preg_replace( '/\.'.$this->preg_exts.'$/is', '', $tmp_localpath );
			}
			if( $this->px->get_path_proc_type( $tmp_localpath ) == 'ignore' || $this->px->get_path_proc_type( $tmp_localpath ) == 'pass' ){
				$tmp_localpath = $this->px->fs()->get_realpath('/'.$path);
			}
			$tmp_localpath = $this->px->fs()->normalize_path( $tmp_localpath );
			$this->add_queue( $tmp_localpath );
			return true;
		}

		$ls = $this->px->fs()->ls( $realpath );
		if( !is_array($ls) ){
			$ls = array();
		}
		// ↓ `/index.html` がignoreされている場合に、
		// 　ディレクトリスキャンがキャンセルされてしまう問題があり、
		// 　ここでの評価はしないことにした。
		// 　※add_queue()で評価しているので、結果問題なし。
		// if( $this->px->is_ignore_path( './'.$path ) ){
		// 	return true;
		// }


		foreach( $this->px->conf()->paths_proc_type as $row => $type ){
			// $conf->paths_proc_type の設定から、
			// 明らかに除外できると判断できるディレクトリは再帰処理をキャンセルする。
			// 設定値の末尾が `/*` で終わっている ignore 指定の行は、 "ディレクトリ以下すべて除外" と断定し、
			// これにマッチしたディレクトリをキャンセルの対象とする。
			if(!is_string($row)){continue;}
			if( $type != 'ignore' ){
				continue;
			}
			if( strrpos($row, '/*') !== strlen($row)-2 ){
				continue;
			}
			// var_dump($row);
			$preg_pattern = preg_quote($this->px->fs()->normalize_path($this->px->fs()->get_realpath($row)), '/');
			$realpath_controot = $this->px->fs()->normalize_path( $this->px->fs()->get_realpath( $this->px->get_path_docroot().$this->px->get_path_controot() ) );
			if( preg_match('/\*/',$preg_pattern) ){
				// ワイルドカードが使用されている場合
				$preg_pattern = preg_quote($row,'/');
				$preg_pattern = preg_replace('/'.preg_quote('\*','/').'/','(?:.*?)',$preg_pattern);//ワイルドカードをパターンに反映
			}elseif(is_dir($realpath_controot.$row)){
				$preg_pattern = preg_quote($this->px->fs()->normalize_path($this->px->fs()->get_realpath($row)).'/','/');
			}elseif(is_file($realpath_controot.$row)){
				$preg_pattern = preg_quote($this->px->fs()->normalize_path($this->px->fs()->get_realpath($row)),'/');
			}
			$path_child = $this->px->fs()->normalize_path( $this->px->fs()->get_realpath( $path ).'/' );
			// var_dump($preg_pattern);
			if( preg_match( '/^'.$preg_pattern.'$/s' , $path_child ) ){
				// var_dump($path_child);
				return true;
			}
		}

		foreach( $ls as $basename ){
			set_time_limit(30);
			$this->make_list_by_dir_scan( $path.DIRECTORY_SEPARATOR.$basename );
		}
		return true;
	}
204404
function openExecute(puzzle, data, variety, callback){
	if(typeof variety!=='string' && !callback){
		callback = variety;
		variety = void 0;
	}

	puzzle.ready = false;

	var classes = puzzle.klass;
	var Board = ((!!classes && !!classes.Board) ? classes.Board : null);
	var pzl = pzpr.parser(data, (variety || puzzle.pid));

	pzpr.classmgr.setPuzzleClass(puzzle, pzl.pid, function(){
		/* パズルの種類が変わっていればオブジェクトを設定しなおす */
		if(Board!==puzzle.klass.Board){ initObjects(puzzle);}
		else{ puzzle.painter.suspendAll();}
		
		try{
			puzzle.metadata.reset();
			if     (pzl.isurl) { new puzzle.klass.Encode().decodeURL(pzl);}
			else if(pzl.isfile){ new puzzle.klass.FileIO().filedecode(pzl);}
			
			puzzle.ready = true;
			puzzle.emit('ready');
			puzzle.emit('mode');
			
			if(!!puzzle.canvas){ postCanvasReady(puzzle);}
			
			puzzle.resetTime();
			
			if(!!callback){ callback(puzzle);}
		}
		catch(e){
			puzzle.emit('fail-open');
			throw e;
		}
	});
}
318456
def upload(token, end_point, input_file_path)
      #相対パスがきた時のために絶対パスに変換
      path_name_obj = Pathname.new(input_file_path);
      file_path = path_name_obj.expand_path.to_s
      mime = MIME::Types.type_for(file_path)[0]
      auth_header =
          if mime.nil?
            {'X-Auth-Token' => token}
          else
            {'X-Auth-Token' => token,
             'Content-Type' => MIME::Types.type_for(file_path)[0].to_s
            }
          end

      auth_header['X-Web-Mode'] = 'true' if @web_mode

      http_client = HTTPClient.new
      http_client.send_timeout = @send_timeout.to_i unless(@send_timeout.nil?)

      target_url = add_filename_to_url(end_point, file_path)

      puts 'upload_url -> ' + target_url

      if @delete_at
        auth_header['X-Delete-At'] = @delete_at
      end
      if @delete_after
        auth_header['X-Delete-After'] = @delete_after
      end
      if @meta_data_hash
        create_meta_data_header(auth_header, @meta_data_hash)
      end

      if File::ftype(file_path) == 'directory'
        auth_header['Content-Length'] = 0
        auth_header['Content-Type'] = 'application/directory'
        if @web_mode
          if @web_file_listing
           auth_header['X-Container-Read'] = '.r:*' + ',.rlistings'
           auth_header['X-Container-Meta-Web-Index'] = 'index.html'
          else
            auth_header['X-Container-Read'] = '.r:*'
          end
          #auth_header['X-Container-Meta-Web-Listings'] = 'true'
          #auth_header['X-Container-Meta-Web-Listings-CSS'] = 'listing.css'
        end
        p auth_header
        @res = http_client.put(URI.parse(URI.encode(target_url)), file_path, auth_header)
        if @res.status == UPLOAD_SUCCESS_HTTP_STATUS_CODE
          Dir::foreach(file_path) {|f|
            next if (f == '.' || f == '..')
            begin
              child_path = path_name_obj.join(f)
              # 再帰
              upload(token, add_filename_to_url(end_point, File::basename(file_path)), child_path)
            rescue => e
              puts e
            end
          }
        end
      else
        p auth_header

        if LargeObject::StaticLargeObject.is_over_default_limit_object_size(File.size(file_path))
          #Auto SLO Mode
          p File.size(file_path)
          puts '------ Over limit object size! change Static Large Object Mode. ------- '
          LargeObject::Slo_client.new(self, input_file_path, end_point).upload
        else
          File.open(file_path) do |file|
            @res = http_client.put(URI.parse(URI.encode(target_url)), file, auth_header)
          end
        end

      end

      #p @res
      @res.status
    end
396844
function setCanvas_main(puzzle, type){
	/* fillTextが使えない場合は強制的にSVG描画に変更する */
	if(type==='canvas' && !!pzpr.Candle.enable.canvas && !CanvasRenderingContext2D.prototype.fillText){ type = 'svg';}
	
	pzpr.Candle.start(puzzle.canvas, type, function(g){
		pzpr.util.unselectable(g.canvas);
		g.child.style.pointerEvents = 'none';
		if(g.use.canvas && !puzzle.subcanvas){
			var canvas = puzzle.subcanvas = createSubCanvas('canvas');
			if(!!document.body){
				canvas.id = "_"+(new Date()).getTime()+type; /* 何か他とかぶらないようなID */
				canvas.style.position = 'absolute';
				canvas.style.left = '-10000px';
				canvas.style.top = '0px';
				document.body.appendChild(canvas);
			}
		}
		if(puzzle.ready){ postCanvasReady(puzzle);}
	});
}
87231
function(){
		var partslist = this.modifyNodes;
		var newcomponents = [];
		for(var i=0,len=partslist.length;i<len;i++){
			partslist[i].component = null;
		}
		for(var i=0,len=partslist.length;i<len;i++){
			if(partslist[i].component!==null){ continue;}	// 既にidがついていたらスルー
			var component = this.createComponent();
			this.searchSingle(partslist[i], component);
			this.setComponentInfo(component);
			newcomponents.push(component);
		}
		this.modifyNodes = [];
		return newcomponents;
	}
701925
function isOpen (date) {
  date = this.toDate(date);
  if (!date) {
    return null;
  }

  // 臨時営業・臨時休業
  var info = getDayInfo(this.dayInfo, date);
  if (info) {
    if (info.open) {
      return true;
    } else if (info.close) {
      return false;
    }
  }

  // 定休日判定
  if (this.isRegularHoliday(date)) {
    return false;
  }

  // 年末年始・お盆等の休みの判定
  if (this.isSeasonHoliday(date)) {
    return false;
  }

  // 祝日判定
  if (this.isHolidayClose(date)) {
    return false;
  }

  return true;
}
187227
function(){
		if(this.type!==FILE_PZPR){ return;}
		
		switch(this.pid){
		case 'ichimaga':
			var pzlflag = this.body.split('\n')[0];
			if     (pzlflag==='mag')  { this.pid = 'ichimagam';}
			else if(pzlflag==='cross'){ this.pid = 'ichimagax';}
			break;
		case 'icelom':
			var pzltype = this.body.split('\n')[2];
			if(pzltype==='skipwhite'){ this.pid = 'icelom2';}
			break;
		case 'pipelink':
			var lines = this.body.split('\n'), row = 1, len = this.rows;
			if(lines.slice(row, row+len).join('').match(/o/)){
				this.pid = 'pipelinkr';
			}
			break;
		case 'bonsan':
			var lines = this.body.split('\n'), row = 2*this.rows, len = 2*this.rows-1;
			if(lines.slice(row, row+len).join('').match(/1/)){
				this.pid = 'heyabon';
			}
			break;
		case 'kramma':
			var lines = this.body.split('\n'), row = this.rows, len = this.rows+1;
			if(lines.slice(row, row+len).join('').match(/1/)){
				this.pid = 'kramman';
			}
			break;
		}
	}
252318
private function path_resolve_in_html( $src ){

		// Simple HTML Parser を通したときに、
		// もとの文字セットが無視されて DEFAULT_TARGET_CHARSET (=UTF-8) に変換されてしまう問題に対して、
		// もとの文字セットを記憶 → UTF-8 に一時変換 → Simple HTML Parser → 最後にもとの文字セットに変換しなおす
		// という処理で対応した。
		$detect_encoding = mb_detect_encoding($src);


		// HTMLをパース
		$html = str_get_html(
			mb_convert_encoding( $src, DEFAULT_TARGET_CHARSET, $detect_encoding ) ,
			false, // $lowercase
			false, // $forceTagsClosed
			DEFAULT_TARGET_CHARSET, // $target_charset
			false, // $stripRN
			DEFAULT_BR_TEXT, // $defaultBRText
			DEFAULT_SPAN_TEXT // $defaultSpanText
		);

		if($html === false){
			// HTMLパースに失敗した場合、無加工のまま返す。
			$this->px->error('HTML Parse ERROR. $src size '.strlen($src).' byte(s) given; '.__FILE__.' ('.__LINE__.')');
			return $src;
		}

		$conf_dom_selectors = array(
			'*[href]'=>'href',
			'*[src]'=>'src',
			'form[action]'=>'action',
		);

		foreach( $conf_dom_selectors as $selector=>$attr_name ){
			$ret = $html->find($selector);
			foreach( $ret as $retRow ){
				$val = $retRow->getAttribute($attr_name);
				$val = $this->get_new_path($val);
				$retRow->setAttribute($attr_name, $val);
			}
		}

		$ret = $html->find('*[style]');
		foreach( $ret as $retRow ){
			$val = $retRow->getAttribute('style');
			$val = str_replace('&quot;', '"', $val);
			$val = str_replace('&lt;', '<', $val);
			$val = str_replace('&gt;', '>', $val);
			$val = $this->path_resolve_in_css($val);
			$val = str_replace('"', '&quot;', $val);
			$val = str_replace('<', '&lt;', $val);
			$val = str_replace('>', '&gt;', $val);
			$retRow->setAttribute('style', $val);
		}

		$ret = $html->find('style');
		foreach( $ret as $retRow ){
			$val = $retRow->innertext;
			$val = $this->path_resolve_in_css($val);
			$retRow->innertext = $val;
		}

		$src = $html->outertext;

		// もとの文字セットを復元
		$src = mb_convert_encoding( $src, $detect_encoding );

		return $src;
	}
324381
function parseTemplate(code, parserOptions) {
    const sourceCodeStore = new SourceCodeStore(code)

    // 文字位置をそのままにしてscriptとhtmlを分解
    let script = ""
    let pre = 0
    let template = ""
    const microTemplateTokens = [] // テンプレートTokens
    for (const token of genMicroTemplateTokens(
        code,
        parserOptions,
        sourceCodeStore
    )) {
        microTemplateTokens.push(token)
        const start = token.start
        const end = token.end

        const part = code.slice(pre, start)
        script += replaceToWhitespace(part)
        template += part

        const scriptBeforeBase = token.expressionStart.chars
        const scriptAfterBase = token.expressionEnd.chars
        const scriptBefore = replaceToWhitespace(scriptBeforeBase)
        let scriptAfter = replaceToWhitespace(scriptAfterBase)
        if (token.type !== "MicroTemplateEvaluate") {
            scriptAfter = scriptAfter.replace(/ /u, ";")
        }
        script += `${scriptBefore}${token.code}${scriptAfter}`

        template += replaceToWhitespace(code.slice(start, end))

        pre = end
    }
    const part = code.slice(pre, code.length)
    script += replaceToWhitespace(part)
    template += part

    const scriptResult = parseScript(script, parserOptions)

    sourceCodeStore.template = template
    sourceCodeStore.script = script

    const service = new MicroTemplateService({
        code,
        template,
        script,
        microTemplateTokens,
        sourceCodeStore,
        ast: scriptResult.ast,
    })
    container.addService(parserOptions.filePath, service)
    scriptResult.services = Object.assign(scriptResult.services || {}, {
        getMicroTemplateService() {
            return service
        },
    })
    return scriptResult
}
761127
function(e){
		this.btn = pzpr.util.getMouseButton(e);
		
		// SHIFTキー/Commandキーを押している時は左右ボタン反転
		var kc = this.puzzle.key;
		kc.checkmodifiers(e);
		if(((kc.isSHIFT || kc.isMETA) !== this.inversion) || this.inputMode==='number-'){
			if     (this.btn==='left'){ this.btn = 'right';}
			else if(this.btn==='right'){ this.btn = 'left';}
		}
	}
58838
public static function SendFile ($file_path, $file_name = null, $mime_type = null, $options = []) {
		//==============================================
		//オプション展開
		//==============================================
		$filename_from_charset	= $options['from_charset']			?? Encoding::UTF_8;
		$filename_to_charset	= $options['to_charset']			?? Encoding::SJIS;
		$chunk_size				= $options['chunk_size']			?? static::CHUNK_SIZE;
		$content_disposition	= $options['content_disposition']	?? static::CONTENT_DISPOSITION_ATTACHMENT;

		//==============================================
		//ファイル存在確認
		//==============================================
		if (($status = FileSystem::IsReadableFile($file_path, $options)) !== true) {
			return $status;
		}

		//==============================================
		//ファイル情報取得
		//==============================================
		$file_size = filesize($file_path);

		//==============================================
		//ファイル名確定
		//==============================================
		$file_name = $file_name ?: basename($file_path);

		//==============================================
		//mime type確定
		//==============================================
		if ($mime_type === null) {
			$ext = pathinfo($file_name, \PATHINFO_EXTENSION);
			$mime_type = isset(self::GetMimeTypeMapForExt()[$ext]) ? self::GetMimeTypeMapForExt()[$ext] : self::MIME_TYPE_BINARY;
		}

		//==============================================
		//ファイル送信開始
		//==============================================
		//HTTP ResponseHeaderの出力
		foreach (static::GetHttpHeaderContentDispositionAttachment(
			$file_name,
			$file_size,
			$mime_type,
			$content_disposition,
			$filename_to_charset,
			$filename_from_charset
		) as $header) {
			header(str_replace(["\r", "\n"], '', $header));
		}

		//----------------------------------------------
		//実処理の開始
		//----------------------------------------------
		//既存の出力を全て送信
		OutputBuffer::Clean();
		flush();

		//file pointer open
		$fp = fopen($file_path, 'rb');

		//timeout引き延ばし処理：実行開始秒
		$split_time = time();

		//チャンクサイズごとに送信
		while (!feof($fp)) {
			print fread($fp, $chunk_size);
			flush();

			//3秒以上経過ごとにタイムリミットを延長する
			if (time() - $split_time > 3) {
				set_time_limit(time() - $split_time);
			}
		}

		//==============================================
		//処理の終了
		//==============================================
		fclose($fp);
	}
1243682
function(col,row){
		if(col===(void 0)||isNaN(col)){ col=this.cols; row=this.rows;}

		this.allclear(false); // initGroupで、新Objectに対しては別途allclearが呼ばれます

		this.initGroup('cell',   col, row);
		this.initGroup('cross',  col, row);
		this.initGroup('border', col, row);
		this.initGroup('excell', col, row);

		this.cols = col;
		this.rows = row;
		this.setminmax();
		this.setposAll();

		this.initExtraObject(col,row);

		this.rebuildInfo();

		this.puzzle.cursor.initCursor();
		this.puzzle.opemgr.allerase();
	}
514119
public function init( $keyword_file )
    {
        // キーワードファイルの読み込み
        $keywords = array();
        $fp = fopen( $keyword_file, 'r' );
        if ( !$fp ) {
            throw new PhpSourceParserException( self::ERROR_FILENOTFOUND, "Keyword file not found:$keyword_file" );
        }
        while ( !feof($fp) ) {
            $buffer = fgets( $fp, 4096 );
            $keyword = trim($buffer);
            $keywords[$keyword] = 1;
        }
        fclose( $fp );
        $this->_keywords = $keywords;
    }
1139479
function fparse(fpath) {
  if (fs.existsSync(!fpath)) {
    console.error(config_file + ': No such file.');
    return [false, false];
  }

  var fd        = fs.openSync(fpath, 'r');
  var read      = '';
  var pos       = 0;
  var start     = 0;
  var Ns        = {};
  var currentNs = null;
  var currentN  = null;
  var remnant   = '';
  var result    = {};
  var buffsize  = 65535;
  var summary   = null;
  var length    = 0;
  var emptyline = 0;

  function setAtEnd(_summary, _length, _emptyline) {
    // result, and fpath is in outer scope.
    _summary.length = _length - _emptyline;
    result[_summary.id] = new FASTA(_summary, fpath);
  }


  do {
    read = fs.readSync(fd, buffsize, pos);

    var lines = (remnant + read[0]).split('\n');
    remnant = lines.pop();

    lines.forEach(function(line, i) {

      if (line.match('N')) {
        if (!currentN) {
          currentN = {
            line: i,
            start: start + length,
            end : start + length+ line.length
          };
        }
        else {
          currentN.line++;
          currentN.end += line.length;
        }
      }
      else if (currentN) {
        currentNs.push(currentN);
        currentN = null;
      }

      if (line == '') {
        emptyline++;
      }
      else if (line.charAt(0) == '>') {
        // register a previous summary
        if (summary) {
          setAtEnd(summary, length, emptyline);
        }
        start += length;
        emptyline = 0;
        length    = 0;
        // make a new summary
        var id_desc = line.slice(1).split(' ');
        var id = id_desc.shift();
        var desc = (id_desc.length) ? id_desc.join(' ') : null;
        summary = {id: id, desc: desc, start: start, linelen: 0};
        // make a new Ns
        Ns[summary.id] = [];
        currentNs = Ns[summary.id];
      }
      else {
        if (!summary) {
          console.error(fpath +' does not seem to be FASTA format.');
          process.exit();
        }
        if (!summary.linelen) {
          summary.linelen = line.length;
        }
      }
      length += line.length + 1;
    });
    pos = pos + read[1];
  }
  while (read[1] > 0);

  // end
  length += remnant.replace('\n', '').length;
  setAtEnd(summary, length, emptyline);

  fs.closeSync(fd);
  return [result, Ns];
}
1186020
@Override
	public void initialize() {
		if (getCryptColumnNames() == null || getCryptColumnNames().isEmpty()) {
			setSkipFilter(true);
			return;
		} else {
			cryptParamKeys = new ArrayList<>();
			List<String> newColumnNames = new ArrayList<>();
			for (String columnName : getCryptColumnNames()) {
				cryptParamKeys.add(CaseFormat.CAMEL_CASE.convert(columnName));
				newColumnNames.add(CaseFormat.UPPER_SNAKE_CASE.convert(columnName));
			}
			// 定義ファイルで指定されたカラム名は大文字でない可能性があるので、ここで大文字に置換し直す
			cryptColumnNames = newColumnNames;
		}

		KeyStore store;
		try {
			if (StringUtils.isBlank(getKeyStoreFilePath())) {
				LOG.error("Invalid KeyStore file path. Path:{}", getKeyStoreFilePath());
				setSkipFilter(true);
				return;
			}
			Path storeFile = toPath(getKeyStoreFilePath());
			if (!Files.exists(storeFile)) {
				LOG.error("Not found KeyStore file path. Path:{}", getKeyStoreFilePath());
				setSkipFilter(true);
				return;
			}
			if (Files.isDirectory(storeFile)) {
				LOG.error("Invalid KeyStore file path. Path:{}", getKeyStoreFilePath());
				setSkipFilter(true);
				return;
			}
			if (StringUtils.isBlank(getStorePassword())) {
				LOG.error("Invalid password for access KeyStore.");
				setSkipFilter(true);
				return;
			}
			if (StringUtils.isBlank(getAlias())) {
				LOG.error("No alias for access KeyStore.");
				setSkipFilter(true);
				return;
			}

			store = KeyStore.getInstance("JCEKS");

			char[] pass;
			try (InputStream is = new BufferedInputStream(Files.newInputStream(storeFile))) {
				pass = new String(Base64.getUrlDecoder().decode(getStorePassword())).toCharArray();

				store.load(is, pass);
			}

			KeyStore.SecretKeyEntry entry = (SecretKeyEntry) store.getEntry(getAlias(),
					new KeyStore.PasswordProtection(pass));

			secretKey = entry.getSecretKey();
			encryptCipher = Cipher.getInstance(transformationType);
			encryptCipher.init(Cipher.ENCRYPT_MODE, secretKey);
			useIV = encryptCipher.getIV() != null;
		} catch (Exception ex) {
			LOG.error("Failed to acquire secret key.", ex);
			setSkipFilter(true);
		}
	}