anchor.diff:    Future<StartPortMapResult> startPortMap({bool reuseRouter: false, newProtocol: UpnpPPPDevice.VALUE_PORT_MAPPING_PROTOCOL_TCP, eagerError: false}) async {
       _requestedPort = basePort;
       List<UpnpDeviceInfo> deviceInfoList = await searchRoutder(reuseRouter: reuseRouter);
  +    if(deviceInfoList == null || deviceInfoList.length == 0) {
  +      throw "not found router";
  +    }
   
       int maxRetryExternalPort = _requestedPort + numOfRetry;
   
  
positive.code:   // ####
    Future<List<StartGetExternalIp>> startGetExternalIp({bool reuseRouter: false}) async {
      List<UpnpDeviceInfo> deviceInfoList = await searchRoutder(reuseRouter: reuseRouter);
      List<String> externalIps = [];
  
      for (UpnpDeviceInfo info in deviceInfoList) {
  
negative.code: 
    Future<DeleteAllPortMapResult> deletePortMapFromAppIdDesc({bool reuseRouter: false, newProtocol: UpnpPPPDevice.VALUE_PORT_MAPPING_PROTOCOL_TCP, eagerError: false}) async {
      List<UpnpDeviceInfo> deviceInfoList = await searchRoutder(reuseRouter: reuseRouter);
      if(deviceInfoList == null || deviceInfoList.length == 0) {
        throw "not found router";
      }
      List<Future> r = [];
      for (UpnpDeviceInfo deviceInfo in deviceInfoList) {
        List<GetPortMapInfoResult> results = await getPortMapInfo(target: appIdDesc, reuseRouter: reuseRouter, eagerError: eagerError, info: deviceInfo);
  